#include <bits/stdc++.h>
#define el '\n'
#define fi first
#define sec second
#define pb push_back
#define int long long
#define pii pair<int,int>
#define sz(v) (int)(v).size()
#define all(v) (v).begin(),(v).end()
#define FOR(i, a, b) for(int i = (a), _b = (b); i <= _b; i++)
#define REP(i, a, b) for(int i = (a), _b = (b); i >= _b; i--)
using namespace std;
const int INF = (int)1e18 + 462010;
const int MAX_A = 100;
const int MAX_N = 2e5;
const int BS = 450;
struct Disjoint_Set_Union {
int parent[MAX_A + 5];
int root[MAX_A + 5];
int color[MAX_A + 5];
void build() {
FOR(i, 1, MAX_A) {
parent[i] = i;
root[i] = i;
color[i] = i;
}
}
int get(int u) {
if (u == parent[u]) return u;
return parent[u] = get(parent[u]);
}
void unite(int x, int y) {
if (x == y || root[x] == 0) return;
if (root[y] == 0) {
root[y] = root[x];
color[root[y]] = y;
root[x] = 0;
} else {
parent[root[x]] = root[y];
root[x] = 0;
}
}
int value(int u) {
return color[get(u)];
}
}dsu[MAX_N / BS + 5];
int a[MAX_N + 5];
int n, q;
void Input(){
cin >> n >> q;
FOR(i, 1, n) cin >> a[i];
}
void re_build(int l, int r, int x, int y){
int block = l / BS;
FOR(i, max(1LL, block * BS), min(n, (block + 1) * BS - 1)){
a[i] = dsu[block].value(a[i]);
if(l <= i && i <= r && a[i] == x) a[i] = y;
}
dsu[block].build();
}
void process(int l, int r, int x, int y){
int bl = l / BS, br = r / BS;
if(bl == br){
re_build(l, r, x, y);
return;
}
FOR(i, bl + 1, br - 1) dsu[i].unite(x, y);
re_build(l, (bl + 1) * BS - 1, x, y);
re_build(br * BS, r, x, y);
}
void Prepare(){
FOR(i, 0, n / BS) dsu[i].build();
}
void Solve(){
while(q--){
int l, r, x, y;
cin >> l >> r >> x >> y;
process(l, r, x, y);
}
FOR(i, 1, n) cout << dsu[i / BS].value(a[i]) << " ";
}
signed main(){
freopen("rangeset.INP", "r", stdin);
freopen("rangeset.OUT", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
Input();
Prepare();
Solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGVsICdcbicKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlYyBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBzeih2KSAoaW50KSh2KS5zaXplKCkKI2RlZmluZSBhbGwodikgKHYpLmJlZ2luKCksKHYpLmVuZCgpCiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvcihpbnQgaSA9IChhKSwgX2IgPSAoYik7IGkgPD0gX2I7IGkrKykKI2RlZmluZSBSRVAoaSwgYSwgYikgZm9yKGludCBpID0gKGEpLCBfYiA9IChiKTsgaSA+PSBfYjsgaS0tKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBJTkYgPSAoaW50KTFlMTggKyA0NjIwMTA7CmNvbnN0IGludCBNQVhfQSA9IDEwMDsKY29uc3QgaW50IE1BWF9OID0gMmU1Owpjb25zdCBpbnQgQlMgPSA0NTA7CgpzdHJ1Y3QgRGlzam9pbnRfU2V0X1VuaW9uIHsKICAgIGludCBwYXJlbnRbTUFYX0EgKyA1XTsKICAgIGludCByb290W01BWF9BICsgNV07CiAgICBpbnQgY29sb3JbTUFYX0EgKyA1XTsKCiAgICB2b2lkIGJ1aWxkKCkgewogICAgICAgIEZPUihpLCAxLCBNQVhfQSkgewogICAgICAgICAgICBwYXJlbnRbaV0gPSBpOwogICAgICAgICAgICByb290W2ldID0gaTsKICAgICAgICAgICAgY29sb3JbaV0gPSBpOwogICAgICAgIH0KICAgIH0KCiAgICBpbnQgZ2V0KGludCB1KSB7CiAgICAgICAgaWYgKHUgPT0gcGFyZW50W3VdKSByZXR1cm4gdTsKICAgICAgICByZXR1cm4gcGFyZW50W3VdID0gZ2V0KHBhcmVudFt1XSk7CiAgICB9CgogICAgdm9pZCB1bml0ZShpbnQgeCwgaW50IHkpIHsKICAgICAgICBpZiAoeCA9PSB5IHx8IHJvb3RbeF0gPT0gMCkgcmV0dXJuOwoKICAgICAgICBpZiAocm9vdFt5XSA9PSAwKSB7CiAgICAgICAgICAgIHJvb3RbeV0gPSByb290W3hdOwogICAgICAgICAgICBjb2xvcltyb290W3ldXSA9IHk7CiAgICAgICAgICAgIHJvb3RbeF0gPSAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHBhcmVudFtyb290W3hdXSA9IHJvb3RbeV07CiAgICAgICAgICAgIHJvb3RbeF0gPSAwOwogICAgICAgIH0KICAgIH0KCiAgICBpbnQgdmFsdWUoaW50IHUpIHsKICAgICAgICByZXR1cm4gY29sb3JbZ2V0KHUpXTsKICAgIH0KfWRzdVtNQVhfTiAvIEJTICsgNV07CgppbnQgYVtNQVhfTiArIDVdOwppbnQgbiwgcTsKCnZvaWQgSW5wdXQoKXsKICAgIGNpbiA+PiBuID4+IHE7CiAgICBGT1IoaSwgMSwgbikgY2luID4+IGFbaV07Cn0KCnZvaWQgcmVfYnVpbGQoaW50IGwsIGludCByLCBpbnQgeCwgaW50IHkpewogICAgaW50IGJsb2NrID0gbCAvIEJTOwogICAgRk9SKGksIG1heCgxTEwsIGJsb2NrICogQlMpLCBtaW4obiwgKGJsb2NrICsgMSkgKiBCUyAtIDEpKXsKICAgICAgICBhW2ldID0gZHN1W2Jsb2NrXS52YWx1ZShhW2ldKTsKICAgICAgICBpZihsIDw9IGkgJiYgaSA8PSByICYmIGFbaV0gPT0geCkgYVtpXSA9IHk7CiAgICB9CiAgICBkc3VbYmxvY2tdLmJ1aWxkKCk7Cn0KCnZvaWQgcHJvY2VzcyhpbnQgbCwgaW50IHIsIGludCB4LCBpbnQgeSl7CiAgICBpbnQgYmwgPSBsIC8gQlMsIGJyID0gciAvIEJTOwoKICAgIGlmKGJsID09IGJyKXsKICAgICAgICByZV9idWlsZChsLCByLCB4LCB5KTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgRk9SKGksIGJsICsgMSwgYnIgLSAxKSBkc3VbaV0udW5pdGUoeCwgeSk7CiAgICByZV9idWlsZChsLCAoYmwgKyAxKSAqIEJTIC0gMSwgeCwgeSk7CiAgICByZV9idWlsZChiciAqIEJTLCByLCB4LCB5KTsKfQoKdm9pZCBQcmVwYXJlKCl7CiAgICBGT1IoaSwgMCwgbiAvIEJTKSBkc3VbaV0uYnVpbGQoKTsKfQoKdm9pZCBTb2x2ZSgpewogICAgd2hpbGUocS0tKXsKICAgICAgICBpbnQgbCwgciwgeCwgeTsKICAgICAgICBjaW4gPj4gbCA+PiByID4+IHggPj4geTsKICAgICAgICBwcm9jZXNzKGwsIHIsIHgsIHkpOwogICAgfQogICAgRk9SKGksIDEsIG4pIGNvdXQgPDwgZHN1W2kgLyBCU10udmFsdWUoYVtpXSkgPDwgIiAiOwp9CgpzaWduZWQgbWFpbigpewogICAgZnJlb3BlbigicmFuZ2VzZXQuSU5QIiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJyYW5nZXNldC5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKCiAgICBJbnB1dCgpOwogICAgUHJlcGFyZSgpOwogICAgU29sdmUoKTsKCiAgICByZXR1cm4gMDsKfQo=