#include
#include
#include
#include
using namespace std ;
const int maxn = 1010 ;
const int inf = 0x7fffffff ;
int dis[maxn] ;int st ,en;
int head[maxn] , nedge ;
int n , m;
struct Edge
{
int v , w ;
int next ;
}edge[maxn<<1] ;
void addedge(int u , int v , int w)
{
edge[nedge].v = v ;
edge[nedge].w = w ;
edge[nedge].next = head[u] ;
head[u] = nedge++ ;
edge[nedge].v = u ;
edge[nedge].w = 0 ;
edge[nedge].next = head[v] ;
head[v] = nedge++ ;
}
bool bfs()
{
queue que ;
memset(dis , -1 ,sizeof(dis)) ;
dis[st] = 0 ;
que.push(st) ;
while(que.size())
{
int u = que.front() ;
que.pop() ;
for(int i = head[u]; i != -1 ; i = edge[i].next)
{
int v = edge[i].v ;
if(edge[i].w > 0 && dis[v] < 0)
{
dis[v] = dis[u] + 1 ;
que.push(v) ;
}
}
}
if(dis[en] > 0)
return true ;
return false ;
}
int dfs(int u , int mx)
{
if(u == en)
return mx ;
int a ;
for(int i = head[u] ;i != -1 ;i = edge[i].next)
{
int v = edge[i].v ;
if(dis[v] == dis[u] + 1 && edge[i].w > 0 && (a = dfs(v ,min(mx , edge[i].w))))
{
edge[i].w -= a ;
edge[i^1].w += a ;
return a ;
}
}
return 0 ;
}
int main()
{
int t ;
int cas = 0 ;
scanf(%d , &t) ;
while(t--)
{
scanf(%d%d , &n , &m) ;
memset(head , -1 , sizeof(head)) ;
nedge = 0 ;
while(m--)
{
int u , v , w;
scanf(%d%d%d , &u , &v , &w) ;
addedge(u , v , w) ;
}
int ans = 0 ;
int res ;
st = 1 , en = n ;
while(bfs())
while(res = dfs(1 , inf))
ans += res ;
printf(Case %d: ,++cas) ;
cout<