#include using namespace std; using ll = long long; int main() { cin.tie(0)->sync_with_stdio(0); int n, m, q; cin >> n >> m >> q; vector d(n), e(n); for (int &i : d) cin >> i; for (int &i : e) cin >> i; vector> adj(n); unordered_set help; for (int i = 0; i < m; ++i) { int a, b; cin >> a >> b; --a; --b; adj[a].push_back(b); adj[b].push_back(a); help.insert(min(a, b) * (10000000) + max(a, b)); } vector tmp(n); for (int i = 0; i < n; ++i) { tmp[i] = d[i]; for (int u : adj[i]) { tmp[i] += d[u]; } } d = tmp; for (int i = 0; i < n; ++i) { tmp[i] = e[i]; for (int u : adj[i]) { tmp[i] += e[u]; } } e = tmp; tmp = vector(n, 0); int sqr = sqrt(q) + 1; vector> madd, dadd; madd.reserve(1000); dadd.reserve(1000); for (int id = 0; id < q; ++id) { if (id % sqr == 0) { for (auto i : madd) { tmp[i.first] += i.second; } for (int i = 0; i < n; ++i) { if (tmp[i] == 0) continue; e[i] += tmp[i]; for (int u : adj[i]) { e[u] += tmp[i]; } tmp[i] = 0; } for (auto i : dadd) { tmp[i.first] += i.second; } for (int i = 0; i < n; ++i) { if (tmp[i] == 0) continue; d[i] += tmp[i]; for (int u : adj[i]) { d[u] += tmp[i]; } tmp[i] = 0; } dadd.clear(); madd.clear(); } string type; cin >> type; if (type == "add") { int cnt, v; string who; cin >> cnt >> who >> v; if (who == "desk") { dadd.emplace_back(v - 1, cnt); } else madd.emplace_back(v - 1, cnt); } else { int v; cin >> v; --v; int mres = e[v], dres = d[v]; for (auto i : madd) { int u = i.first; if (help.find(min(u, v) * (10000000) + max(u, v)) != help.end() || u == v) mres += i.second; } for (auto i : dadd) { int u = i.first; if (help.find(min(u, v) * (10000000) + max(u, v)) != help.end() || u == v) dres += i.second; } if (mres < dres) cout << "desks\n"; else if (mres > dres) cout << "monitors\n"; else cout << "same\n"; ; } } return 0; }