/// WHAT I CAN NOT CREATE , I DO NOT UNDERSTAND
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<db> vd;
typedef vector<ld> vld;
typedef vector<bool> vb;
typedef vector<vector<ll>> vvl;
typedef vector<vector<int>> vvi;
typedef vector<pii> vii;
typedef set<int> si;
typedef set<ll> sl;
#define pb push_back
#define pf push_front
#define popb pop_back
#define popf pop_front
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define endl "\n"
const int MOD = 998244353, mod = 1e9 + 7, maxA = 1e5 + 5;
#define time cerr << "Time Taken: " << (float)clock() / CLOCKS_PER_SEC << " Secs";
//*===================>>>FastIO - FileIO<<<=========
void fastIO()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
}
void fileIO()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
freopen("out.txt", "w", stdout);
#endif
}
void Blablabla()
{
int n, q;
cin >> n >> q;
vector<vector<int>> v(n);
while (q--)
{
int op, idx;
cin >> op >> idx;
if (op == 0)
{
int x;
cin >> x;
v[idx].push_back(x);
}
else if (op == 1)
{
for (int i = 0; i < v[idx].size(); i++)
{
if(i > 0)
{
cout << " ";
}
cout << v[idx][i];
}
cout << endl;
}
else if (op == 2)
{
v[idx].clear();
}
}
}
int main()
{
fastIO();
// fileIO();
ll tc = 1, t = 1;
// cin >> t;
while (t--)
{
// cout << "Case " << tc++ << ": ";
Blablabla();
}
// time;
return 0;
}
Ly8vIFdIQVQgSSBDQU4gTk9UIENSRUFURSAsIEkgRE8gTk9UIFVOREVSU1RBTkQKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIGRvdWJsZSBkYjsKdHlwZWRlZiBsb25nIGRvdWJsZSBsZDsKdHlwZWRlZiBwYWlyPGludCwgaW50PiBwaWk7CnR5cGVkZWYgcGFpcjxsbCwgbGw+IHBsbDsKdHlwZWRlZiB2ZWN0b3I8aW50PiB2aTsKdHlwZWRlZiB2ZWN0b3I8bGw+IHZsbDsKdHlwZWRlZiB2ZWN0b3I8ZGI+IHZkOwp0eXBlZGVmIHZlY3RvcjxsZD4gdmxkOwp0eXBlZGVmIHZlY3Rvcjxib29sPiB2YjsKdHlwZWRlZiB2ZWN0b3I8dmVjdG9yPGxsPj4gdnZsOwp0eXBlZGVmIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gdnZpOwp0eXBlZGVmIHZlY3RvcjxwaWk+IHZpaTsKdHlwZWRlZiBzZXQ8aW50PiBzaTsKdHlwZWRlZiBzZXQ8bGw+IHNsOwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHBmIHB1c2hfZnJvbnQKI2RlZmluZSBwb3BiIHBvcF9iYWNrCiNkZWZpbmUgcG9wZiBwb3BfZnJvbnQKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSByYWxsKHgpIHgucmJlZ2luKCksIHgucmVuZCgpCiNkZWZpbmUgZW5kbCAiXG4iCmNvbnN0IGludCBNT0QgPSA5OTgyNDQzNTMsIG1vZCA9IDFlOSArIDcsIG1heEEgPSAxZTUgKyA1OwojZGVmaW5lIHRpbWUgY2VyciA8PCAiVGltZSBUYWtlbjogIiA8PCAoZmxvYXQpY2xvY2soKSAvIENMT0NLU19QRVJfU0VDIDw8ICIgU2VjcyI7Ci8vKj09PT09PT09PT09PT09PT09PT0+Pj5GYXN0SU8gLSBGaWxlSU88PDw9PT09PT09PT0Kdm9pZCBmYXN0SU8oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBjb3V0LnRpZShudWxscHRyKTsKfQp2b2lkIGZpbGVJTygpCnsKI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgIGZyZW9wZW4oImluLnR4dCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3Blbigib3V0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKI2VuZGlmCn0KCnZvaWQgQmxhYmxhYmxhKCkKewogICAgaW50IG4sIHE7CiAgICBjaW4gPj4gbiA+PiBxOwoKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gdihuKTsKCiAgICB3aGlsZSAocS0tKQogICAgewogICAgICAgIGludCBvcCwgaWR4OwogICAgICAgIGNpbiA+PiBvcCA+PiBpZHg7CgogICAgICAgIGlmIChvcCA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHg7CiAgICAgICAgICAgIGNpbiA+PiB4OwoKICAgICAgICAgICAgdltpZHhdLnB1c2hfYmFjayh4KTsKICAgICAgICB9CgogICAgICAgIGVsc2UgaWYgKG9wID09IDEpCiAgICAgICAgewogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZbaWR4XS5zaXplKCk7IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoaSA+IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY291dCA8PCAiICI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb3V0IDw8IHZbaWR4XVtpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICAgICAgfQoKICAgICAgICBlbHNlIGlmIChvcCA9PSAyKQogICAgICAgIHsKICAgICAgICAgICAgdltpZHhdLmNsZWFyKCk7CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGZhc3RJTygpOwogICAgLy8gZmlsZUlPKCk7CgogICAgbGwgdGMgPSAxLCB0ID0gMTsKICAgIC8vIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkKICAgIHsKICAgICAgICAvLyBjb3V0IDw8ICJDYXNlICIgPDwgdGMrKyA8PCAiOiAiOwogICAgICAgIEJsYWJsYWJsYSgpOwogICAgfQogICAgLy8gICB0aW1lOwogICAgcmV0dXJuIDA7Cn0K