#include <bits/stdc++.h>
using namespace std;
vector <string> fs;
int n;
bool check(string name) {
auto iter_f = find(fs.begin(), fs.end(), name);
if (iter_f != fs.end()) return true;
else return false;
}
vector<string>::iterator check_pos(string name) {
auto iter_f = find(fs.begin(), fs.end(), name);
return iter_f;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
string c;
cin >> c;
if (c == "touch") {
string name;
cin >> name;
if (!check(name)) fs.push_back(name);
} else if (c == "rm") {
string name;
if (check(name)) fs.erase(check_pos(name));
} else if (c == "ls") {
if (fs.empty()) continue;
for (int i = 0; i < fs.size(); i++) {
cout << fs[i] << endl;
}
} else if (c == "rename") {
string name_1, name_2;
cin >> name_1 >> name_2;
if (check(name_1) && !check(name_2)) {
for (int i = 0; i < fs.size(); i++) {
if (fs[i] == name_1) {
fs[i] = name_2;
break;
}
}
}
}
}
return 0;
}