#include <bits/stdc++.h>
#pragma comment(linker, "/stack:20000000")
using namespace std;
void redirectIO() {}
int main() {
  redirectIO();
  int n;
  scanf("%d", &n);
  ;
  int m;
  scanf("%d", &m);
  ;
  long long arr[200010];
  long long addh[200010];
  int sett[200010];
  for (int i = 0; i < (n); ++i) {
    scanf("%d", &arr[i]);
    ;
    sett[i] = 0;
  }
  addh[0] = 0;
  int tt = 1;
  for (int i = 0; i < (m); ++i) {
    int t;
    scanf("%d", &t);
    ;
    int a;
    scanf("%d", &a);
    ;
    if (t == 1) {
      int b;
      scanf("%d", &b);
      ;
      sett[--a] = tt - 1;
      arr[a] = b;
    } else if (t == 2) {
      addh[tt] = addh[tt - 1] + (long long)a;
      ++tt;
    } else if (t == 3) {
      --a;
      printf("%d ", (arr[a] + addh[tt - 1] - addh[sett[a]]));
      ;
    }
  }
  return 0;
}
