#include<cstdio> //EK()演算法。時間複雜度(VE^2)#include<queue>#include<cstring>using namespace std;const int maxn = 100;const int INF = (1<<30)-1;int g[maxn][maxn];int flow[maxn],pre[maxn];bool vis[maxn];int n,m;int bfs(int s,int e){ memset(pre,-1,sizeof(pre)); memset(vis,false,sizeof(vis)); queue<int > q; vis[s] = true; for(int i=1;i<=n;i++) flow[i]=INF; q.push(s); while(!q.empty()){ int now = q.front(); q.pop(); if(now==n) break; for(int i=1;i<=n;i++){ //尋找增廣路最小流量 if(!vis[i]&&g[now][i]>0){ vis[i] = true; flow[i] = min(flow[now],g[now][i]); pre[i] = now; q.push(i); } } } if(!vis[e]|| e==1) //找不到完整的增廣路or源點匯點重合 return -1; else return flow[e];}int EK(int s,int e){ int temp,d,res,maxflow; maxflow = 0; while((d=bfs(s,e))!=-1){ maxflow += d; temp=n; while(temp!=1){ res = pre[temp]; g[res][temp]-=d; //正向邊 g[temp][res]+=d; //反向邊 temp = res; } } return maxflow;}int main(){ int T,ca=1; int start,end,capacity; scanf("%d",&T); while(T--){ memset(g,0,sizeof(g)); scanf("%d %d",&n,&m); for(int i=1;i<=m;i++){ scanf("%d%d%d",&start,&end,&capacity); g[start][end]+=capacity; } printf("Case %d: %d\n",ca++,EK(1,n)); } return 0;}