#include<bits/stdc++.h>
using namespace std;
int read() {
char ch=getchar();
int r=0,w=1;
while(ch<'0'||ch>'9') w=ch=='-'?-1:w,ch=getchar();
while(ch>='0'&&ch<='9') r=r*10+ch-'0',ch=getchar();
return r*w;
}
void write(long long n){
if(n<0) putchar('-'),n*=-1;
if(n>9) write(n/10);
putchar(n % 10 + '0');
}
const int N=200001,M=451;
int n,q,cnt,l,r,s,w;
int xl[N],x[M],y[M],fk[N],flag[M][101],nice[M];
int A[M][101],C[M][101][M],AC[M][101];
signed main(){
n=read();
for(int i=1;i<=n;i++){
xl[i]=read();
}
for(int i=1;i<=(int)sqrt(n);i++){
cnt++;
x[cnt]=y[cnt-1]+1;
y[cnt]=x[cnt]+(int)sqrt(n)-1;
for(int j=x[cnt];j<=y[cnt];j++){
fk[j]=cnt;
}
}
if(y[cnt]<n){
cnt++;
x[cnt]=y[cnt-1]+1;
y[cnt]=n;
for(int i=x[cnt];i<=y[cnt];i++){
fk[i]=cnt;
}
}
for(int i=1;i<=cnt;i++){
nice[i]=1;
}
q=read();
for(int i=1;i<=q;i++){
l=read(),r=read(),s=read(),w=read();
for(int j=l;j<=min(y[fk[l]],r);j++){
if(A[fk[l]][xl[j]]==s||(!A[fk[l]][xl[j]]&&xl[j]==s)){
xl[j]=w;
}
else if(A[fk[l]][xl[j]]){
xl[j]=A[fk[l]][xl[j]];
}
}
for(int j=x[fk[l]];j<l;j++){
if(A[fk[l]][xl[j]]){
xl[j]=A[fk[l]][xl[j]];
}
}
if(r<y[fk[l]]){
for(int j=r+1;j<=y[fk[l]];j++){
if(A[fk[l]][xl[j]]){
xl[j]=A[fk[l]][xl[j]];
}
}
}
for(int j=1;j<=AC[fk[l]][0];j++){
C[fk[l]][AC[fk[l]][j]][0]=0;
A[fk[l]][AC[fk[l]][j]]=0;
}
AC[fk[l]][0]=0;
nice[fk[l]]++;
if(fk[l]!=fk[r]){
for(int j=x[fk[r]];j<=r;j++){
if(A[fk[r]][xl[j]]==s||(!A[fk[r]][xl[j]]&&xl[j]==s)){
xl[j]=w;
}
else if(A[fk[r]][xl[j]]){
xl[j]=A[fk[r]][xl[j]];
}
}
for(int j=r+1;j<=y[fk[r]];j++){
if(A[fk[r]][xl[j]]){
xl[j]=A[fk[r]][xl[j]];
}
}
for(int j=1;j<=AC[fk[r]][0];j++){
C[fk[r]][AC[fk[r]][j]][0]=0;
A[fk[r]][AC[fk[r]][j]]=0;
}
AC[fk[r]][0]=0;
nice[fk[r]]++;
}
for(int j=fk[l]+1;j<fk[r];j++){
if(flag[j][s]!=nice[j]){
AC[j][++AC[j][0]]=s;
flag[j][s]=nice[j];
}
if(flag[j][w]!=nice[j]){
AC[j][++AC[j][0]]=w;
flag[j][w]=nice[j];
}
for(int k=1;k<=C[j][s][0];k++){
A[j][C[j][s][k]]=w;
C[j][w][++C[j][w][0]]=C[j][s][k];
}
if(!A[j][s]){
A[j][s]=w;
C[j][w][++C[j][w][0]]=s;
}
C[j][s][0]=0;
}
}
for(int i=1;i<=n;i++){
if(A[fk[i]][xl[i]]){
write(A[fk[i]][xl[i]]);
}
else{
write(xl[i]);
}
printf(" ");
}
return 0;
}