#include <bits/stdc++.h>
using namespace std;
char s[3000005], t[3000005];
int k, n, l[3000005], r[3000005], pre[3000005], cnt;
int sum[3000005 * 4];
void build(int now, int l, int r) {
  if (l == r) {
    sum[now] = 1;
    return;
  }
  int mid = (l + r) >> 1;
  build(now << 1, l, mid);
  build(now << 1 | 1, mid + 1, r);
  sum[now] = sum[now << 1] + sum[now << 1 | 1];
}
int ser(int now, int l, int r, int pos) {
  if (l == r) return l;
  int mid = (l + r) >> 1;
  if (sum[now << 1] < pos)
    return ser(now << 1 | 1, mid + 1, r, pos - sum[now << 1]);
  else
    return ser(now << 1, l, mid, pos);
}
void insert(int now, int l, int r, int pos) {
  sum[now]--;
  if (l == r) return;
  int mid = (l + r) >> 1;
  if (sum[now << 1] < pos)
    insert(now << 1 | 1, mid + 1, r, pos - sum[now << 1]);
  else
    insert(now << 1, l, mid, pos);
}
int main() {
  scanf("%s %d%d", s + 1, &k, &n);
  for (int i = 1; i <= n; i++) scanf("%d%d", &l[i], &r[i]);
  build(1, 1, k);
  int len = k;
  for (int i = n; i >= 1; i--) {
    if (r[i] >= len) continue;
    for (int j = 1; j <= r[i] - l[i] + 1; j++) {
      if (r[i] + j > len) break;
      int pos = ser(1, 1, k, r[i] + 1);
      int prepos = (j <= (r[i] - l[i] + 1) / 2)
                       ? j * 2 + l[i] - 1
                       : (j - (r[i] - l[i] + 1) / 2) * 2 - 1 + l[i] - 1;
      prepos = ser(1, 1, k, prepos);
      pre[pos] = prepos;
      insert(1, 1, k, r[i] + 1);
    }
    len -= min(r[i] - l[i] + 1, len - r[i]);
  }
  for (int i = 1; i <= k; i++)
    if (pre[i])
      t[i] = t[pre[i]];
    else
      t[i] = s[++cnt];
  puts(t + 1);
}
