#include #include #include #include #include #include #include using namespace std; #define REP(i,b,n) for(int i=b;i=0)ori[i][i-1] = 1; ori[i][i] = 1; if (i+1< c)ori[i][i+1] = 1; } rep(i,c)rep(j,c)A[0][i][j] = ori[i][j]; ll p = 2; REP(i,1,64){ matmul(c,A[i],A[i-1],A[i-1]); p <<= 2; } } void matvec(int c,ll p,vector & vec){ vector next(c); rep(i,63){ if ((1LL< > in){ vector y; rep(i,(int)in.size())y.push_back(in[i].first); y.push_back(r-1); sort(y.begin(),y.end()); y.erase(unique(y.begin(),y.end()),y.end()); vector cur(c); rep(i,c)cur[i] = 0;cur[0] = 1; rep(i,c)rep(j,c)ori[i][j] = 0; rep(i,c){ if (i)ori[i][i-1] =1; ori[i][i] = 1; if (i+1>c>>r>>n && r){ precomp(c); vector > in; rep(i,n){ ll y; int x; cin>>x>>y; y--;x--; in.push_back(make_pair(y,x)); } ll ans = solve(r,c,in); cout <<"Case " << tc++ << ": " << ans << endl; } return 0; }