#include <cstdio>
using namespace std;
struct Node
{
bool flag;
int id;
};
namespace FAST_IO
{
inline int read()
{
int s = 0;
char ch = getchar();
while (ch >= '0' && ch <= '9')
{
s = (s << 1) + (s << 3) + (ch ^ 48);
ch = getchar();
}
return s;
}
inline void write(int x)
{
int s[20], top = 0;
while (x)
{
s[++top] = x % 10;
x /= 10;
}
if (!top) s[++top] = 0;
while (top)
{
putchar(s[top--] + '0');
}
}
};
using namespace FAST_IO;
Node a[10005][105];
int main()
{
int n, m;
n = read();
m = read();
for (register int i = 0; i < n; i++)
{
for (register int j = 0; j < m; j++)
{
a[i][j].flag = read();
a[i][j].id = read();
}
}
int x, sum = 0;
x = read();
x %= m;
int last = x;
for (register int i = 0; i < n; i++)
{
sum += a[i][last % m].id;
int cnt = 0;
Node b = a[i][last % m];
int c = b.id;
if (b.flag) cnt++;
while (cnt < c)
{
last++;
cnt += a[i][last % m].flag;
}
}
write(sum % 20123);
putchar('\n');
return 0;
}