#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const long long imx = INT_MAX;
const long long imn = INT_MIN;
int static dp[1001][1001];
bool comp(pair<long long, long long> &a, pair<long long, long long> &b) {
  return a.second < b.second;
}
void solve() {
  long long n;
  cin >> n;
  long long a[n];
  for (long long(i) = 0; (i) < (n); (i)++) {
    cin >> a[i];
  }
  long long q;
  cin >> q;
  vector<pair<long long, long long>> v(n);
  for (long long(i) = 0; (i) < (n); (i)++) {
    v[i] = {-1, a[i]};
  }
  vector<pair<long long, long long>> d(q);
  for (long long(i) = 0; (i) < (q); (i)++) {
    d[i] = {i, 0};
    long long t;
    cin >> t;
    if (t == 1) {
      long long p, x;
      cin >> p >> x;
      v[p - 1] = {i, x};
    } else {
      long long x;
      cin >> x;
      d[i] = {i, x};
    }
  }
  for (long long(i) = (q - 2); (i) >= (0); (i)--) {
    d[i].second = max(d[i].second, d[i + 1].second);
  }
  sort(d.begin(), d.end());
  for (long long(i) = 0; (i) < (n); (i)++) {
    if (v[i].first == -1) {
      a[i] = max(d[0].second, v[i].second);
    } else {
      auto x = lower_bound(d.begin(), d.end(), v[i]);
      if (x == d.end()) {
        a[i] = v[i].second;
      } else {
        a[i] = max((*x).second, v[i].second);
      }
    }
  }
  for (long long(i) = 0; (i) < (n); (i)++) {
    cout << a[i] << " ";
  }
  cout << '\n';
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t = 1;
  for (long long(_) = 0; (_) < (t); (_)++) {
    solve();
  }
  return 0;
}
