#include "wombats.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
int sm=0;
int n, m;
int v[5000][200], h[5000][200];
void init(int R, int C, int H[5000][200], int V[5000][200]) {
n = R;
m = C;
sm=0;
for (int i=0; i<n; i++) {
for (int j=0; j<m; j++) {
v[i][j] = V[i][j];
h[i][j] = H[i][j];
}
}
for (int i=0; i<n-1; i++) {
sm += v[i][0];
}
}
void changeH(int P, int Q, int W) {
h[P][Q] = W;
}
void changeV(int P, int Q, int W) {
v[P][Q] = W;
}
int escape(int V1, int V2) {
map<pii, int> mp;
int id=0;
for (int i=0; i<n; i++) {
for (int j=0; j<m; j++) {
mp[{i, j}] = id++;
}
}
vector<vector<pii>> adj(id);
vector<int> dis(id, 1e9);
int s = mp[{0, V1}];
int e = mp[{n-1, V2}];
for (int i=0; i<n; i++) {
for (int j=0; j<m-1; j++) {
int a = mp[{i, j}];
int b = mp[{i, j+1}];
adj[a].push_back({b, h[i][j]});
adj[b].push_back({a, h[i][j]});
}
}
for (int i=0; i<n-1; i++) {
for (int j=0; j<m; j++) {
int a = mp[{i, j}];
int b = mp[{i+1, j}];
adj[a].push_back({b, v[i][j]});
}
}
priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> pq;
pq.push({0, s});
dis[s] = 0;
while (!pq.empty()) {
auto [d, u] = pq.top();
pq.pop();
if (d != dis[u]) {
continue;
}
for (auto [v, w] : adj[u]) {
if (dis[v] > dis[u]+w) {
dis[v] = dis[u]+w;
pq.push({dis[v], v});
}
}
}
return dis[e];
}