#include <bits/stdc++.h>
using namespace std;
struct node {
  int ch, l, r;
};
int main() {
  int n, q, m;
  scanf("%d%d%d", &n, &q, &m);
  int a[n];
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  node b[q];
  for (int i = 0; i < q; i++) {
    scanf("%d%d%d", &b[i].ch, &b[i].l, &b[i].r);
    b[i].l--;
    b[i].r--;
  }
  while (m--) {
    int x;
    scanf("%d", &x);
    x--;
    for (int i = q - 1; i >= 0; i--) {
      if (x >= b[i].l && x <= b[i].r) {
        if (b[i].ch == 1) {
          if (x == b[i].l)
            x = b[i].r;
          else
            x--;
        } else {
          x = b[i].l + b[i].r - x;
        }
      }
    }
    printf("%d\n", a[x]);
  }
  return 0;
}
