#include <bits/stdc++.h>
#define MAXN 43
using namespace std;
int dsu[MAXN];
vector<pair<int,pair<int,int> > > e;
int root(int u)
{
    while(dsu[u]!=u)
    {
        dsu[u]=dsu[dsu[u]];
        u=dsu[u];
    }
    return u;
}
void Resi(int N, int R, int C, int Q, int** U, int** V, int** W,
	int* X1, int* Y1, int* X2, int* Y2, int* O)
{
	for(int q=1;q<=Q;q++)
    {
        for(int i=1;i<=N;i++) dsu[i]=i;
        e.clear();
        for(int i=X1[q];i<=X2[q];i++) for(int j=Y1[q];j<=Y2[q];j++)
            e.push_back(make_pair(W[i][j],make_pair(V[i][j],U[i][j])));
        sort(e.begin(),e.end());
        int res=0;
        for(int i=0;i<e.size();i++)
        {
            int u=e[i].second.first,v=e[i].second.second;
            if(root(u)!=root(v))
            {
                res+=e[i].first;
                dsu[root(u)]=root(v);
            }
        }
        int c=root(1);
        bool pr=false;
        for(int i=1;i<=N;i++) if(root(i)!=c) pr=true;
        if(pr) O[q]=-1;
        else O[q]=res;
    }
}