#include <fstream>
#include <vector>
using namespace std;
struct edge
{
int cap, cost, initial;
};
ifstream in("cmcm.in");
ofstream out("cmcm.out");
int nst, ndr, m, cntedge, cntnod, source, dest;
vector<pair<int, int>> v[1255];
edge muc[200005];
int inv[200005];
void add_edge(int a, int b, int cap, int cost, int initial)
{
cntedge++;
muc[cntedge] = {cap, cost, initial};
v[a].push_back({b, cntedge});
cntedge++;
muc[cntedge] = {0, -cost, 0};
v[b].push_back({a, cntedge});
inv[cntedge - 1] = cntedge;
inv[cntedge] = cntedge - 1;
}
int main()
{
in>>nst>>ndr>>m;
int x, y, z;
for(int i = 1; i<=m; i++)
{
in>>x>>y>>z;
add_edge(x, y + nst, 1, z, 1);
}
cntnod = nst + ndr;
cntnod++;
source = cntnod;
cntnod++;
dest = cntnod;
for(int i = 1; i<=nst; i++)
{
cntnod++;
add_edge(cntnod, i, 1, 0, 0);
add_edge(source, cntnod, 1, 0, 0);
}
for(int i = nst + 1; i<=nst + ndr; i++)
{
cntnod++;
add_edge(i, cntnod, 1, 0, 0);
add_edge(cntnod, dest, 1, 0, 0);
}
return 0;
}