#include<iostream>
#include<cstring>
using namespace std;
struct man
{
bool face;
string name;
};
struct step
{
bool dir;
int num;
};
int main()
{
int n, m;
cin >> n >> m;
string name1;
int a = 0;
man arr1[100000];
step arr2[100000];
for (int i = 0; i < n; i++)
{
cin >> arr1[i].face >> arr1[i].name;
}
for (int i = 0; i < m; i++)
{
cin >> arr2[i].dir >> arr2[i].num;
}
for (int i = 0; i < m; i++)
{
if (arr1[a].face==0)
{
if (arr2[i].dir == 0)
{
name1 = arr1[(a + arr2[i].num % n)%n].name;
a = (a + arr2[i].num % n) % n;
}
else
{
name1 = arr1[(a + n - arr2[i].num % n) % n].name;
a = (a + n - arr2[i].num % n) % n;
}
}
else
{
if (arr2[i].dir == 1)
{
name1 = arr1[(a + arr2[i].num % n)%n].name;
a = (a + arr2[i].num % n) % n;
}
else
{
name1 = arr1[(a + n - arr2[i].num % n) % n].name;
a = (a + n - arr2[i].num % n) % n;
}
}
}
cout << name1 << endl;
return 0;
}