#include <iostream>
#include <stdio.h>
#include <memory.h>
using namespace std;
#define mat_size 100
struct Mat
{
int m, n;
int mt[mat_size][mat_size];
};
Mat operator *(Mat a, Mat b)
{
int i, j, k, s;
Mat ans;
for (i = 0; i < a.m; i++)
for (j = 0; j < b.n; j++)
{
s = 0;
for (k = 0; k < a.n; k++)
{
s += a.mt[i][k]*b.mt[k][j];
}
ans.mt[i][j] = s;
}
return ans;
}
Mat mat_pow(Mat a, int b)
{
Mat s;
while (b)
{
if (b&1)s = s * a;
a = a*a;
b <<= 1;
}
return s;
}
int main()
{
return 0;
}