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