#include<iostream>
#include<string>
#include<vector>
#include<numeric>
#include<math.h>
#include<algorithm>
#include<iomanip>
#include<list>
#include<bitset>
using namespace std;

int main() {

	// ���� ---------------------------------------------
	int D;
	cin >> D;

	vector<int> c(26, 0);
	for (int i = 0; i < c.size(); i++) {
		cin >> c[i];
	}

	vector<vector<int>> s(D, vector<int>(26, 0));
	for (int i = 0; i < s.size(); i++) {
		for (int j = 0; j < s[i].size(); j++) {
			cin >> s[i][j];
		}
	}
	// ----------------------------------------------------

	/*
	// �×~�@ ---------------------------------------------
	// �X�R�A
	int score = 0;
	// ���̃X�R�A
	int dscore = 0;
	// �O���̃X�R�A
	int bscore = 0;
	// �R���e�X�g�����{�����ŋ߂̓��ɂ�
	vector<int> last(26, -1);
	// ���̓��ɂ�
	int dlast = 0;
	// �R���e�X�g�̓���
	vector<int> day(D, 0);
	// ���ɂ��̃��[�v
	for (int i = 0; i < D; i++) {
		// ����܂ł̃X�R�A���i�[
		dscore = bscore;
		// 0�Ԗڂ̃R���e�X�g�̃X�R�A����Ƃ��Ċi�[
		score += s[i][0];
		dlast = last[0];
		last[0] = i;
		for (int k = 0; k < c.size(); k++) {
			score -= c[k] * (i - last[k]);
		}
		last[0] = dlast;
		day[i] = 1;
		// �R���e�X�g�̃��[�v
		for (int j = 1; j < 26;  j++) {
			dscore += s[i][j];
			dlast = last[j];
			last[j] = i;
			for (int k = 0; k < c.size(); k++) {
				dscore -= c[k] * (i - last[k]);
			}
			last[j] = dlast;
			if (dscore > score) {
				score = dscore;
				day[i] = j + 1;
			}
			// �O���̃X�R�A�ɖ߂�
			dscore = bscore;
		}
		// �X�R�A���i�[
		bscore = score;
		// last���X�V
		last[day[i] - 1] = i;
	}

	// �o��
	for (int i = 0; i < day.size(); i++) {
		cout << day[i] << endl;
	}
	// ----------------------------------------------------
	*/

	/*
	// A ��� ----------------------------------------------------
	vector<int> t(D, 0);
	for (int i = 0; i < t.size(); i++) {
		cin >> t[i];
		t[i]--;
	}

	// �R���e�X�g�����{�����ŋ߂̓��ɂ�
	vector<int> last(26, -1);

	int ans = 0;

	for (int i = 0; i < t.size(); i++) {
		ans += s[i][t[i]];
		last[t[i]] = i;
		for (int j = 0; j < c.size(); j++) {
			ans -= c[j] * (i - last[j]);
		}
		cout << ans << endl;
	}
	// ----------------------------------------------------
	*/

	// C ��� ----------------------------------------------------
	vector<int> t(D, 0);
	for (int i = 0; i < t.size(); i++) {
		cin >> t[i];
		t[i]--;
	}

	int M;
	cin >> M;

	vector<int> d(M, 0);
	vector<int> q(M, 0);
	for (int i = 0; i < M; i++) {
		cin >> d[i] >> q[i];
		d[i]--;
		q[i]--;
	}

	// �R���e�X�g�����{�����ŋ߂̓��ɂ��i���ɂ����Ɓj
	vector<vector<int>> last(D + 1, vector<int>(26, -1));

	// �X�R�A�i���ɂ����Ɓj
	vector<int> score(D + 1, 0);

	// ���X�̓����̌v�Z
	for (int i = 0; i < t.size(); i++) {
		score[i] += s[i][t[i]];
		last[i][t[i]] = i;
		for (int j = 0; j < c.size(); j++) {
			score[i] -= c[j] * (i - last[i][j]);
		}
		// ���̓����̒l���X�V
		score[i + 1] = score[i];
		last[i + 1] = last[i];
	}

	// �N�G�����̎��s����
	vector<int> ans(M, 0);
	// �N�G�����̎��s
	for (int k = 0; k < M; k++) {
		// �R���e�X�g�̕ύX
		t[d[k]] = q[k];
		if (d[k] == 0) {
			score[0] = 0;
			last[0] = vector<int>(26, -1);
		}
		else {
			score[d[k]] = score[d[k] - 1];
			last[d[k]] = last[d[k] - 1];
		}

		// �����̌v�Z
		for (int i = d[k]; i < t.size(); i++) {
			score[i] += s[i][t[i]];
			last[i][t[i]] = i;
			for (int j = 0; j < c.size(); j++) {
				score[i] -= c[j] * (i - last[i][j]);
			}
			// ���̓����̒l���X�V
			score[i + 1] = score[i];
			last[i + 1] = last[i];
		}
		ans[k] = score[D];
		cout << ans[k] << endl;
	}
	// ----------------------------------------------------

	return 0;
}

Measured memory_bytes: 4420