#include <bits/stdc++.h>
using namespace std;
int lim;
long long bit[100010];
long long read(int i) {
  long long s;
  for (s = 0; i; i -= (i & -i)) s += bit[i];
  return s;
}
void updateX(int i, long long v) {
  for (i; i <= lim; i += (i & -i)) bit[i] += v;
}
void update(int s, int e, long long v) {
  updateX(s, v);
  updateX(e + 1, -v);
}
int main() {
  int i, m;
  long long v;
  int tp, a, b;
  scanf("%d%d", &lim, &m);
  for (i = 1; i <= lim; i++) scanf("%lld", &v), update(i, i, v);
  while (m--) {
    scanf("%d", &tp);
    if (tp == 1) {
      scanf("%d%d", &a, &b);
      v = read(a);
      if (v) update(a, a, -v);
      update(a, a, b);
    } else if (tp == 2) {
      scanf("%d", &b);
      update(1, lim, b);
    } else {
      scanf("%d", &a);
      printf("%lld\n", read(a));
    }
  }
  return 0;
}
