#include using namespace std; struct matrix{ using T=long long; int h,w; vector> val; matrix(int r,int c=-1):h(r),w(c){ if (w==-1) w=h; val.assign(h,vector(w,0)); } matrix operator*(matrix b){ matrix a=*this,c(h,b.w); for (int i=0;i0){ if (k%2==1) ret=ret*m; m=m*m; k/=2; } return ret; } }; int main(){ int p=67; int n=2; matrix a(n),b(n); for (int i=0;i>a.val[i][j]; for (int i=0;i>b.val[i][j]; matrix P(n); for (int x1=0;x1