Go: // 九九を出すだけ
package main
import (
	"fmt"
	"os"
	"bufio"
)
var out = bufio.NewWriter(os.Stdout)

func main(){
	defer out.Flush()
	for i:=1; i<10; i++{
		for j:=1; j<10; j++{
			fmt.Fprintf(out, "%dx%d=%d\n", i, j, i*j)
		}
	}
}

C++: #include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <bitset>
#include <vector>
#include <cstdio>
#include <string>
#include <sstream>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define PB push_back
#define MP make_pair
#define SZ(v) ((int)(v).size())
#define abs(x) ((x) > 0 ? (x) : -(x))
typedef long long LL;

typedef int F;
#define inf (1 << 29)
#define maxV 105
#define maxE 40005
struct Dinic {
	int V, E;
	F cap[maxE], flow[maxE];
	int to[maxE], prev[maxE];
	int level[maxV], used[maxV], last[maxV];

	void init(int n) {
		V = n; E = 0;
		for (int i = 0; i < V; i++) last[i] = -1;
	}

	void addCap(int x, int y, F f) {
		cap[E] = f; flow[E] = 0; to[E] = y; prev[E] = last[x]; last[x] = E; E++;
		cap[E] = 0; flow[E] = 0; to[E] = x; prev[E] = last[y]; last[y] = E; E++;
	}

	bool bfs(int s, int t) {
		for (int i = 0; i < V; i++)
			level[i] = -1;
		queue<int> q;
		q.push(s); level[s] = 0;
		while (!q.empty()) {
			int x = q.front(); q.pop();
			for (int i = last[x]; i != -1; i = prev[i])
				if (level[to[i]] == -1 && cap[i] > flow[i]) {
					q.push(to[i]);
					level[to[i]] = level[x] + 1;
				}
		}
		return (level[t] != -1);
	}

	F dfs(int v, int t, F f) {
		if (v == t) return f;
		for (int i = used[v]; i != -1; used[v] = i = prev[i])
			if (level[to[i]] > level[v] && cap[i] > flow[i]) {
				F tmp = dfs(to[i], t, min(f, cap[i] - flow[i]));
				if (tmp > 0) {
					flow[i] += tmp;
					flow[i ^ 1] -= tmp;
					return tmp;
				}
			}
		return 0;
	}

	F solve(int s, int t) {
		while (bfs(s, t)) {
			for (int i = 0; i < V; i++) used[i] = last[i];
			while (dfs(s, t, inf) != 0);
		}
		F ans = 0;
		for (int i = last[s]; i != -1; i = prev[i])
			ans += flow[i];
		return ans;
	}

	bool mkS[maxV], mkT[maxV];
	int rest;
	void traS(int u) {
		mkS[u] = true;
		for (int i = last[u], v; i != -1; i = prev[i]) {
			if (cap[i] - flow[i] >= rest && !mkS[v = to[i]]) {
				traS(v);
			}
		}
	}

	void traT(int u) {
		mkT[u] = true;
		for (int i = last[u], v; i != -1; i = prev[i]) {
			if (cap[i ^ 1] - flow[i ^ 1] >= rest && !mkT[v = to[i]]) {
				traT(v);
			}
		}
	}

	void work(int s, int t, vector<pair<int, int> > edge, int need) {
		rest = need;
		memset(mkS, 0, sizeof(mkS));
		memset(mkT, 0, sizeof(mkT));
		traS(s);
		traT(t);
		vector<pair<int, int> > ans;
		for (int i = 0; i < edge.size(); i++) {
			int a = edge[i].first, b = edge[i].second;
			if (mkS[a] && mkT[b]) {
				ans.PB(MP(a, b));
			}
		}
		if (ans.size() == 0) {
			puts("not possible");
		} else {
			printf("possible option:");
			sort(ans.begin(), ans.end());
			for (int i = 0; i < ans.size(); i++) {
				printf("(%d,%d)", ans[i].first + 1, ans[i].second + 1);
				if (i != ans.size() - 1) printf(",");
				else printf("\n");
			}
		}
	}
}mf;

int main(int argc, char const *argv[])
{
	int n, m, C;
	int cas = 1;
	while (~scanf("%d%d%d", &n, &m, &C)) {
		if (n == 0 && m == 0 && C == 0) break;
		printf("Case %d: ", cas++);
		if (n == 1) {
			puts("possible");
			continue;
		}
		vector<pair<int, int> > edge;
		mf.init(n);
		for (int i = 0; i < m; i++) {
			int a, b, c;
			scanf("%d%d%d", &a, &b, &c);
			a--; b--;
			edge.PB(MP(a, b));
			mf.addCap(a, b, c);
		}
		F flow = mf.solve(0, n - 1);
		if (flow >= C) {
			puts("possible");
		} else {
			mf.work(0, n - 1, edge, C - flow);
		}
	}
	return 0;
}

C++: #include<iostream>
using namespace std;
int main()
{
	for(int i=1 ; i<=9 ; ++i){
		for(int j=1 ; j<=9 ; ++j){
			cout << i << "x" << j << "=" << i*j << endl;
		}
	}
	return 0;
}

C++: #include <iostream>
#include <cstdio>
using namespace std;

int main(){
  for (int i = 1; i <= 9; i++){
    for (int j = 1; j <= 9; j++){
      printf("%dx%d=%d\n",i,j,i*j);
    }
  }
}

C++: #include <iostream>
using namespace std;

int main()
{
  for (int i = 1; i < 10; i++) {
    for (int j = 1; j < 10; j++) {
      cout << i << 'x' << j << '=' << i*j << endl;
    }
  }
  return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;
#define FOR(i, s, n) for(int i = s; i < (int)n; i++)
#define per(i, n) for(int i = n; i >= 0; i--)
#define ROF(i, s, n) for(int i = s; i >= (int)n; i--)
#define FORIT(i, A) for (auto i : A)
#define PRINT(x) cout << (x) << "\n"
#define ALL(a) (a).begin(),(a).end()
#define RALL(a) (a).rbegin(), (a).rend()
#define MP make_pair
#define EACH(i, n) for (__typeof((n).begin()) i = (n).begin(); i != (n).end(); ++i)
#define SZ(a) int((a).size())
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define SORT(c) sort((c).begin(),(c).end())
#define CLR(a) memset((a), 0 ,sizeof(a))
#define NCLR(a) memset((a), -1 ,sizeof(a))
#define dump(x) cout << #x << " = " << (x) << "\n";
#define debug(x) cout << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << "\n";
#define sq(n) (n) * (n)
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<string> VS;
typedef pair<int, int> PII;
typedef long long LL;
typedef vector<LL> VLL;
typedef vector<VLL> VVLL;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef priority_queue<int> maxpq;
typedef priority_queue< int, vector<int>, greater<int> > minpq;
typedef complex<double> P;
static const double EPS = 1e-10;
static const double PI = acos( -1.0 );
static const int mod = 1000000007;
static const int INF = 1 << 29;
static const LL LL_INF = 1152921504606846976;
static const int dx[] = { -1, 0, 1, 0, 1, -1, 1, -1 };
static const int dy[] = { 0, -1, 0, 1, 1, 1, -1, -1 };


int main() {
#ifdef _DEBUG
	printf( "debug\n" );
#endif
	for ( int i = 1; i < 10; i++ ) {
		for ( int j = 1; j < 10; j++ ) {
			printf( "%dx%d=%d\n", i * i, j, i * j );
		}
	}
	return 0;
}

C++: //
//  main.cpp
//  aojTest1
//
//  Created by yusuke okui on 2013/03/22.
//  Copyright (c) 2013年 yusuke okui. All rights reserved.
//

#include <iostream>

int main(void)
{
	for(int i=1; i<10; i++){
		for(int j=1; j<10; j++){
			std::cout << i << 'x' << j << '=' << i*j << std::endl;
		}
	}
	
	return 0;
	
}

C++: #include<iostream>
using namespace std;

int main(){
    for(i = 0; i < 9; ++i){
      for(i = 0; i < 9; ++i){
        cout << i << "x" << j << "=" << i * j << endl;
         }
       }
    return 0;
}

C++: #include "iostream"
using namespace std;

int main(){

	int mplication, mplicand;

	for (int mplication = 1; mplication <= 9; ++mplication)
	{
		for (int mplicand = 1; mplicand <= 9; ++mplicand)
		{
			cout << mplication << "x" << mplicand << "=" << mplication * mplicand << endl;
		}
	}

    return 0;
}

C++: #include<iostream>
using namespace std;
int main(){
int i,j;
for(i=1;i<10;i++){
for(j=1;j<10;j++){
cout<<i<<"x"<<j<<"="<<i*j<<endl;
}
}
return 0;
}

C++: #include <bits/stdc++.h>

using namespace std;

int main()
{
    cout<<"1x1=1"<<endl<<
        "1x2=2"<<endl<<
        "."<<endl<<
        "."<<endl<<
        "9x8=72"<<endl<<
        "9x9=81"<<endl;
    return 0;
}

C++: public class Main {

	public static void main(String[] a) {
		StringBuilder sb = new StringBuilder();

		for(int i = 1; i <= 9; i++) {
			for(int j = 1; j <= 9; j++) {
				sb.append(i + "x" + j + "=" + i*j + "\n");
			}
		}
		System.out.print(sb);
	}
}

C++: #include <cstdio>

int main(void) {
	for(int i = 1; i <= 9; i++)
		for(int j = 1; j <= 9; j++)
			printf("%dx%d=%d\n", i, j, i * j);
	return 0;
}

C++: #include <bits/stdc++.h>

using namespace std;

int main(){
	for(int i = 1; i <= 9; i++){
		for(int j = 1; j <= 9; j++){
			cout << i << "x" << j << "=" << i * j << endl;
		}
	}
	
	return 0;
}

C++: #include<iostream>
using namespace std;

int main(){
  for(int i=1;i<10;i++){
    for(int j=1;j<10;j++){
      cout<<i<<"x"<<j<<"="<<i*j<<endl;
    }
  }
  return 0;
}