code
#include<bits/stdc++.h>
#define _rep(i,a,b) for(int i=(a);i<=(b);i++)
#define _antirep(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
typedef long long lxl;
typedef double db;
const int N=1e2+5,mod=20123;
int n,m,q,yy[10005][N];
struct node
{
bool f;
int val;
}e[10005][N];
int find(int x,int y,int p)
{
int i=y-1;
while(p)
{
i++; if(i==m) i=0;
if(e[x][i].f) p--;
}
return i;
}
void dfs(int x,int y,int w)
{
if(x>n)
{
printf("%d",w);
exit(0);
}
int Y=yy[x][y];
dfs(x+1,Y,(w+e[x][y].val)%mod);
}
int main()
{
scanf("%d%d",&n,&m);
int x=1,y=0;
_rep(i,1,n*m)
{
scanf("%d%d",&e[x][y].f,&e[x][y].val);
if(i%m==0) x++;
y++; if(y==m) y=0;
}
_rep(i,1,n) _rep(j,0,m) yy[i][j]=find(i,j,e[i][j].val);
scanf("%d",&q);
dfs(1,q,0);
return 0;
}