class MC{
fcn init(n,mod){ var N=n,M=mod; }
fcn toString { String(N.divr(M)[1],"M",M) }
fcn pow(p) { self( N.pow(p).divr(M)[1], M ) }
fcn __opAdd(mc){
if(mc.isType(Int)) z:=N+mc; else z:=N*M + mc.N*mc.M;
self(z.divr(M)[1],M)
}