# 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;
}