#include <iostream> // cout, endl, cin
#include <string> // string, to_string, stoi
#include <vector> // vector
#include <algorithm> // min, max, swap, sort, reverse, lower_bound, upper_bound
#include <math.h> // sqrt
using namespace std;
typedef long long ll;

int main() {
    int D;
    cin >> D;
    vector<int> c(26);
    for (int i = 0; i < 26; i++) {
        cin >> c.at(i);
    }
    vector<vector<int>> s(D, vector<int>(26));
    for (int i = 0; i < D; i++) {
        for (int j = 0; j < 26; j++) {
            cin >> s.at(i).at(j);
        }
    }
    vector<int> t(D);
    for (int i = 0; i < D; i++) {
        cin >> t.at(i);
    }
    int M;
    cin >> M;
    vector<vector<int>> queri(M, vector<int>(2));
    for (int i = 0; i < M; i++) {
        for (int j = 0; j < 2; j++) {
            cin >> queri.at(i).at(j);
        }
    }
    int ans;
    vector<int> v(26, 0);
    vector<int> last;
    for (int k = 0; k < M; k++) {
        ans = 0;
        last = v;
        t.at(queri.at(k).at(0) - 1) = queri.at(k).at(1);
        for (int i = 0; i < D; i++) {
            last.at(t.at(i) - 1) = i + 1;
            for (int j = 0; j < 26; j++) {
                if (t.at(i) == j + 1) {
                    ans += s.at(i).at(t.at(i) - 1);
                }
                else {
                    ans -= (i + 1 - last.at(j)) * c.at(j);
                }
            }
        }
        cout << ans << endl;
    }
}
