//n^2 % m long long done(int m, int n) { if(n == 0) { return 1; } if(n == 1) { return 2; } long long t = done(m, n/2); t = t*t; if(n%2 == 0) { return (long long)(((t%m)==0)?m:t%m); } else { return (long long)(((2*t%m)==0) ? m : t%m*2); } }