#include <bits/stdc++.h>
using namespace std;
int x[200009], u[20][200009];
int a[200009], t[200009];
int check(int l, int r) {
  int lev = 0;
  int ans = 0;
  while (l <= r) {
    if (l % 2 == 1) {
      ans = max(ans, u[lev][l]);
      l++;
    }
    if (r % 2 == 0) {
      ans = max(ans, u[lev][r]);
      r--;
    }
    if (l > r) {
      break;
    }
    l /= 2;
    r /= 2;
    lev++;
  }
  return ans;
}
void hit(int p, int v, int m) {
  int l = p;
  int r = m;
  int lev = 0;
  while (r > 0) {
    if (lev == 0) {
      u[lev][l] = v;
    } else {
      u[lev][l] = max(u[lev - 1][l * 2], u[lev - 1][l * 2 + 1]);
    }
    lev++;
    l /= 2;
    r /= 2;
  }
}
int main() {
  int n, m;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    t[i] = -1;
  }
  scanf("%d", &m);
  for (int i = 0; i < m; i++) {
    int type;
    scanf("%d", &type);
    if (type == 1) {
      int pos, val;
      scanf("%d", &pos);
      scanf("%d", &val);
      a[pos - 1] = val;
      t[pos - 1] = i;
    } else {
      int num;
      scanf("%d", &num);
      hit(i, num, m);
    }
  }
  for (int i = 0; i < n; i++) {
    int g = check(t[i] + 1, m - 1);
    printf("%d ", max(g, a[i]));
  }
  printf("\n");
  return 0;
}
