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
****************************************************************/