#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x=0,y=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') y=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x*y;
}
struct Node{
int k,n;
};
int main(){
freopen("P1076.in","r",stdin);
freopen("P1076.out","w",stdout);
// iostream::sync_with_stdio(false);
int n=read(),m=read();
Node a[n+5][m+5];
int sss[n+5];
for(int i=1;i<=n;i++){
// int x=read(),y=read();
int ss=0;
for(int j=0;j<m;j++){
a[i][j].k=read(),a[i][j].n=read();
ss+=a[i][j].k;
}
sss[i]=ss;
}
// for(int i=1;i<)
int strat=read();
int ans=0;
for(int i=1,j=strat;i<=n;i++){
// cout << a[i][j].n << ' ';
ans=(ans+a[i][j].n)%20123;
int s=a[i][j].k,goal=a[i][j].n;
s+=sss[i]*(goal/m);
while(s!=goal){
j=(j+1)%m;
s+=a[i][j].k;
// s+=sss[i];
}
}
cout << ans << endl;
return 0;
}