#include using namespace std; typedef long long ll; typedef vector vll; #define fr(n) for (ll i = 0; i> n >> m >> q; vector monitors_start, monitors; vector desks_start, desks; vector neighbours; neighbours.reserve(n); monitors_start.reserve(n); desks_start.reserve(n); fr(n){ int x; cin >> x; desks_start.push_back(x); } fr(n){ int x; cin >> x; monitors_start.push_back(x); } while(m--) { int a, b; cin >> a >> b; neighbours[a-1].push_back(b-1); neighbours[b-1].push_back(a-1); } monitors.assign(n, 0); desks.assign(n,0); for (int i = 0; i < n; ++i) { monitors[i] = monitors_start[i]; desks[i] = desks_start[i]; for (const ll neigh : neighbours[i]){ monitors[i] += monitors_start[neigh]; desks[i] += desks_start[neigh]; } } // queries ll index; while (q--){ string s; cin >> s; if (s == "check"){ cin >> index; ll summ = monitors[index-1], sumt = desks[index-1]; if (summ > sumt) cout << "monitors" << endl; else if (sumt > summ) cout << "desks" << endl; else cout << "same" << endl; }else{ int added; cin >> added; string thing; cin >> thing >> index; if (thing == "desk") { desks[index-1] += added; for (const ll neigh : neighbours[index-1]){ desks[neigh] += added; } } else { monitors[index-1] += added; for (const ll neigh : neighbours[index-1]){ monitors[neigh] += added; } } } } }