#include #pragma GCC optimize("O3") //#define int long long using namespace std; #define rep(i, a, b) for(int i = a; i < (b); ++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() typedef long long ll; typedef pair pii; typedef vector vi; int sqN = sqrt(100100); string rs(int a, int b) { return a == b ? "same" : (a < b ? "monitors" : "desks"); } signed main(){ cin.tie(0); ios::sync_with_stdio(0); int n, m, q; cin >> n >> m >> q; vector d(n), e(n), dd(n), de(n), add(n), ade(n), sd(n), se(n); for (int& v : d) cin >> v; for (int& v : e) cin >> v; vector> g(n), bg(n); for (int u, v, i = 0; i < m; ++i) { cin >> u >> v, --u, --v; g[u].push_back(v); g[v].push_back(u); } for (int u = 0; u < n; ++u) for (int v : g[u]) { if (g[v].size() >= sqN) bg[u].push_back(v); sd[u] += d[v]; se[u] += e[v]; } while (q--) { string s; cin >> s; if (s == "check") { int u; cin >> u, --u; if (g[u].size() < sqN) { int td = d[u] + add[u], te = e[u] + ade[u]; for (int v : g[u]) { td += d[v] + add[v]; te += e[v] + ade[v]; } cout << rs(td, te) << '\n'; } else { int td = d[u] + dd[u] + add[u] + sd[u], te = e[u] + ade[u] + de[u] + se[u]; for (int v : bg[u]) { td += add[v]; te += ade[v]; } cout << rs(td, te) << '\n'; } } else if (s == "add") { int cnt; cin >> cnt; string type; cin >> type; int u; cin >> u, --u; if (type == "desk") add[u] += cnt; else ade[u] += cnt; if (g[u].size() < sqN) { for (int v : g[u]) if (type == "desk") dd[v] += cnt; else de[v] += cnt; } } } }