#include <bits/stdc++.h>

using namespace std;

#define nl '\n'
#define debug(...) cout << "[" << #__VA_ARGS__ << "]: "; cout << to_string(__VA_ARGS__) << endl
template <typename T, size_t N> int SIZE(const T(&t)[N]) { return N; } template<typename T> int SIZE(const T& t) { return t.size(); } string to_string(const string s, int x1 = 0, int x2 = 1e9) { return '"' + ((x1 < s.size()) ? s.substr(x1, x2 - x1 + 1) : "") + '"'; } string to_string(const char* s) { return to_string((string)s); } string to_string(const bool b) { return (b ? "true" : "false"); } string to_string(const char c) { return string({ c }); } template<size_t N> string to_string(const bitset<N>& b, int x1 = 0, int x2 = 1e9) { string t = ""; for (int __iii__ = min(x1, SIZE(b)), __jjj__ = min(x2, SIZE(b) - 1); __iii__ <= __jjj__; ++__iii__) { t += b[__iii__] + '0'; } return '"' + t + '"'; } template <typename A, typename... C> string to_string(const A(&v), int x1 = 0, int x2 = 1e9, C... coords); int l_v_l_v_l = 0, t_a_b_s = 0; template <typename A, typename B> string to_string(const pair<A, B>& p) { l_v_l_v_l++; string res = "(" + to_string(p.first) + ", " + to_string(p.second) + ")"; l_v_l_v_l--; return res; } template <typename A, typename... C> string to_string(const A(&v), int x1, int x2, C... coords) { int rnk = rank<A>::value; string tab(t_a_b_s, ' '); string res = ""; bool first = true; if (l_v_l_v_l == 0) res += nl; res += tab + "["; x1 = min(x1, SIZE(v)), x2 = min(x2, SIZE(v)); auto l = begin(v); advance(l, x1); auto r = l; advance(r, (x2 - x1) + (x2 < SIZE(v))); for (auto e = l; e != r; e = next(e)) { if (!first) { res += ", "; } first = false; l_v_l_v_l++; if (e != l) { if (rnk > 1) { res += nl; t_a_b_s = l_v_l_v_l; }; } else { t_a_b_s = 0; } res += to_string(*e, coords...); l_v_l_v_l--; } res += "]"; if (l_v_l_v_l == 0) res += nl; return res; } void dbgm() { ; } template<typename Heads, typename... Tails> void dbgm(Heads H, Tails... T) { cout << to_string(H) << " | "; dbgm(T...); }

//COMMENT DEBUG

void solve()
{
	int n, x;
	cin >> n;
	long long sum = 0;
	vector<int> a(n + 1);
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
		//sum+=x;
	}
	for (int i = 1; i <= n; i++)
	{
		cin >> x;
		sum += (a[i] * x);
	}
	if (sum == 0) {
		cout << "Yes\n";
		return;
	}
	cout << "No\n";
}

int main()
{
	
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif

	ios::sync_with_stdio(0);
	cin.tie(0);
	// int t;
	// cin >> t;
	// while (t--)
	// {
	solve();
	// }
}
#include<bits/stdc++.h>
#define int long long
using namespace std;

int get() {
	int x = 0, f = 1; char c = getchar();
	while(!isdigit(c)) { if(c == '-') f = -1; c = getchar(); }
	while(isdigit(c)) { x = x * 10 + c - '0'; c = getchar(); }
	return x * f;
}

const int N = 2e5 + 5;
int n, m, q, a[N], b[N], ans, len, bin[N], tot;
struct Ask {
	int T, x, y;
} s[N];

struct BIT {
	int sum[N], sum0;
	int lowbit(int x) { return x & (-x); }
	void add(int x, int v) { while(x <= tot) sum[x] += v, x += lowbit(x); }
	int ask(int x) { int r(0); while(x) r += sum[x], x -= lowbit(x); return r + sum0; }
	int ask(int l, int r) { if(l > r) return 0; return ask(r) - ask(l - 1); }
} A1, B1, AS, BS;

void add1(int x) {
	ans += BS.ask(a[x] + 1, tot) + bin[a[x]] * B1.ask(1, a[x]);
	A1.add(a[x], 1), AS.add(a[x], bin[a[x]]);
}

void del1(int x) {
	ans -= BS.ask(a[x] + 1, tot) + bin[a[x]] * B1.ask(1, a[x]);
	A1.add(a[x], -1), AS.add(a[x], -bin[a[x]]);
}

void add2(int x) {
	ans += AS.ask(b[x], tot) + bin[b[x]] * A1.ask(1, b[x] - 1);
	B1.add(b[x], 1), BS.add(b[x], bin[b[x]]);
}

void del2(int x) {
	ans -= AS.ask(b[x], tot) + bin[b[x]] * A1.ask(1, b[x] - 1);
	B1.add(b[x], -1), BS.add(b[x], -bin[b[x]]);
}

signed main() {
	n = get(), m = get(), q = get();
	for(int i = 1; i <= q; i++) s[i].T = get(), s[i].x = get(), s[i].y = get(), bin[i] = s[i].y;
	bin[q + 1] = 0;
	sort(bin + 1, bin + 1 + q + 1), tot = unique(bin + 1, bin + 1 + q + 1) - bin - 1;
	for(int i = 1; i <= q; i++) s[i].y = lower_bound(bin + 1, bin + 1 + tot, s[i].y) - bin;
	for(int i = 1; i <= n; i++) a[i] = 1;
	for(int i = 1; i <= m; i++) b[i] = 1;
	A1.add(1, n), B1.add(1, m);
	for(int i = 1; i <= q; i++) {
		int T = s[i].T, x = s[i].x, y = s[i].y;
		if(T == 1) del1(x), a[x] = y, add1(x);
		else del2(x), b[x] = y, add2(x);
		printf("%lld\n", ans);
	}
	return 0;
}
