import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int x[][]=new int[n][m];
int flat[][]=new int[n][m]; //是否有楼梯数组
for(int i=0;i<n;i++)
for(int j=0;j<m;j++) {
flat[i][j]=sc.nextInt();
x[i][j]=sc.nextInt();
}
int t=sc.nextInt(); //从t号房间开始
long s=0;
for(int i=0;i<n;i++) {
s+=x[i][t]; //s为每层第一个房间的x的和
int a=0,b=0;
for(int j=0;j<m;j++) {
if(flat[i][j]==1) // 查询这层有楼梯的房间存到a
a++;
}
b=x[i][t]%a; //用求余去掉x重复循环的时间
if(b==0) //当余数为0时,x为a的倍数 所以直接b=a
b=a;
for(int j=t;j<m;j++) { //从t开始找出有楼梯的房间
if(flat[i][j]==1)
b--;
if(b==0) {
t=j; //每层第一个房间号为t
break;
}
if(j==m-1) //索引到最后一个数时 回到开头
j=-1;
}
}
System.out.println(s%20123);
}
}
/**************************************************************
Problem: 1665
User: admin
Language: Java
Result: Time Limit Exceed
****************************************************************/