# include <stdio.h>
# include <string.h>
int main()
{
int n,q = 0;
scanf("%d %d", &n ,&q);
char arr[100100] = { 0 };
scanf("%s", arr);
char str[100010] = { 0 };
while (q)
{
int l, r;
scanf("%d %d", &l, &r);
l--;
r--;
int j = 0;
for (int i = 0; i < n; i++)
{
str[j] = arr[i];
j++;
if (i >= l && i <= r)//直接把要重复的区间多放一遍
{
str[j] = arr[i];
j++;
}
}
memcpy(arr, str, sizeof(str));//更新新的字符数组
q--;
n = j + 1;
}
i = 0;
while(arr[i] != '/0')
{
printf("%c",arr[i]);
i++;
}
/*for (int i = 0; i < n; i++)
{
if (arr[i] == '\0')
break;
printf("%c", arr[i]);
}*///不知道这样写为什么不对,如果里面不加那个判断的话会多输出两个\0,结果就错了,加了判断就能过
return 0;
}