#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
const int M=10000;
const int mod=20123;
int ans;
struct Room
{
int flag;
int k;
int sum;
int ID;
}a[M+10][110];
int n,m;
int f[M+10][110];
int main()
{
freopen("treasures.in","r",stdin);
freopen("treasures.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
int t=0;
for(int j=0;j<m;j++)
{
scanf("%d%d",&a[i][j].flag,&a[i][j].k);
if(a[i][j].flag)
{
a[i][0].sum++;
f[i][++t]=j;
}
a[i][j].ID=t;
}
}
int start,n_c=1;
scanf("%d",&start);
int n_r=start;
while(n_c<n+1)
{
int n_k=a[n_c][n_r].k;//牌号
ans=(ans+n_k)%mod;
int n_f=a[n_c][n_r].ID;//现牌号
int n_s=a[n_c][0].sum;//总和
if(a[n_c][n_r].flag)
n_f--;
int n_a=(n_f+n_k%n_s)%n_s;
if(n_a==0)
n_a=n_s;
n_r=f[n_c++][n_a];
//cout<<n_r<<endl;
}
cout<<ans<<endl;
return 0;
}