fork download
  1. enum {PR, PT, PL, PB, XR, XT, XL, XB, YR, YT, YL, YB, __};
  2. vector< vector<mint> > M(13, vector<mint>(13));
  3. M[PR][PR] = S; M[PR][YR] = S; M[PR][PT] = L; M[PR][PB] = R;
  4. M[PT][PT] = S; M[PT][XT] = S; M[PT][PL] = L; M[PT][PR] = R;
  5. M[PL][PL] = S; M[PL][YL] =-S; M[PL][PB] = L; M[PL][PT] = R;
  6. M[PB][PB] = S; M[PB][XB] =-S; M[PB][PR] = L; M[PB][PL] = R;
  7. M[XR][XR] = S; M[XR][__] = S; M[XR][XT] = L; M[XR][XB] = R;
  8. M[XT][XT] = S; M[XT][__] = 0; M[XT][XL] = L; M[XT][XR] = R;
  9. M[XL][XL] = S; M[XL][__] =-S; M[XL][XB] = L; M[XL][XT] = R;
  10. M[XB][XB] = S; M[XB][__] = 0; M[XB][XR] = L; M[XB][XL] = R;
  11. M[YR][YR] = S; M[YR][__] = 0; M[YR][YT] = L; M[YR][YB] = R;
  12. M[YT][YT] = S; M[YT][__] = S; M[YT][YL] = L; M[YT][YR] = R;
  13. M[YL][YL] = S; M[YL][__] = 0; M[YL][YB] = L; M[YL][YT] = R;
  14. M[YB][YB] = S; M[YB][__] =-S; M[YB][YR] = L; M[YB][YL] = R;
  15. M[__][__] = S+L+R;
  16. vector<mint> V(13);
  17. V[__] = 1;
  18. return vMul(mPow(M, n), V)[PR].val;
  19.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty