#include #include using namespace std; typedef long long int ll; struct Node { ll myVal = 0, curVal = 0; vector adj; vector largeAdj; }; int main() { ll n, m, q; cin >> n >> m >> q; vector nodes(n); for (ll i = 0; i < n; ++i) { ll x; cin >> x; nodes[i].myVal += x; } for (ll i = 0; i < n; ++i) { ll x; cin >> x; nodes[i].myVal -= x; } for (ll i = 0; i < m; ++i) { ll a, b; cin >> a >> b; a--; b--; nodes[a].adj.emplace_back(b); nodes[b].adj.emplace_back(a); } ll large = (ll) sqrt(n); for (ll i = 0; i < n; ++i) { for (ll j = 0; j < nodes[i].adj.size(); ++j) { if (nodes[nodes[i].adj[j]].adj.size() > large) nodes[i].largeAdj.emplace_back(nodes[i].adj[j]); else nodes[i].curVal += nodes[nodes[i].adj[j]].myVal; } } for (ll i = 0; i < q; ++i) { string op; cin >> op; if (op == "check") { ll x; cin >> x; x--; ll cur = nodes[x].myVal + nodes[x].curVal; for (ll j = 0; j < nodes[x].largeAdj.size(); ++j) { cur += nodes[nodes[x].largeAdj[j]].myVal; } if (cur == 0) cout << "same" << endl; else if (cur < 0) cout << "monitors" << endl; else cout << "desks" << endl; } else { ll c, x; cin >> c; string type; cin >> type >> x; x--; if (type == "desk") { nodes[x].myVal += c; if (nodes[x].adj.size() <= large) { for (ll j = 0; j < nodes[x].adj.size(); ++j) { nodes[nodes[x].adj[j]].curVal += c; } } }else{ nodes[x].myVal -= c; if (nodes[x].adj.size() <= large) { for (ll j = 0; j < nodes[x].adj.size(); ++j) { nodes[nodes[x].adj[j]].curVal -= c; } } } } } return 0; }