#include using namespace std; struct matrix{ using T=long long; int h,w; int val[2][2]; matrix(int r,int c=-1):h(r),w(c){ if (w==-1) w=h; for (int i=0;i<2;i++) for (int j=0;j<2;j++) val[i][j]=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