//ITNOG
#include<bits/stdc++.h>

using namespace std;

#define int long long

const int maxN = 100 * 1000 + 5;
const int mod = 1000*1000*1000;

int a[6][6];
int p[6], fac[6];
int n, k, tr;

bool check(int x, int mask1, int mask2)
{
    int pp[6], mark[6] = {};
    for(int i = 0; i < n; i ++)
    {
	  int cnt = x / fac[n - i - 1];
	  for(int j = 0; j < n; j ++)
	  {
		if(mark[j]) continue;
		if(cnt == 0) { pp[i] = j; mark[j] = 1; break; }
		cnt --;
	  }

	  x %= fac[n - i - 1];
    }

    int fl = 1;
    for(int i = 0; i < n; i ++)
	  if(mask1 >> i & 1)
		if(mask2 >> i & 1)
		    if(p[i] != pp[i]) { fl = 0; break; }

    return fl;
}



main()
{
    ios::sync_with_stdio(0); cin.tie(0);
    cin >> n >> k >> tr;
    
    fac[0] = 1;
    for(int i = 1; i < 6; i ++) fac[i] = fac[i - 1] * i;
    
    for(int i = 0; i < k; i ++)
    {
	  int v, u, w; cin >> v >> u >> w; v --; u --;
	  a[v][u] = w;
    }

    for(int i = 0; i < n; i ++) p[i] = i;

    
    vector<pair<int, pair<int, int> > > v;
    
    int t = 0;
    do
    {
	  for(int mask = 0; mask < (1 << n); mask ++)
	  {
		int fl = 1, res = 0;
		for(int i = 0; i < n; i ++)
		    if(mask >> i & 1)
			  if(a[i][p[i]] == 0)
			  {
				fl = 0;
				break;
			  }
			  else
				res += a[i][p[i]];
		
		if(fl)
		{
		    for(int i = 0; i < v.size(); i ++)
		    {
			  if(v[i].first != res) continue;

			  if( check(v[i].second.first, v[i].second.second, mask))
			  {
				fl = 0;
				break;
			  }
		    }
		    if(fl) v.push_back(make_pair(res, make_pair(t, mask)));
		}
	  }
	  t ++;
    }while(next_permutation(p, p + n));
    
    sort(v.begin(), v.end());

//    for(int i = 0; i < v.size(); i ++) cout << v[i].first << endl;
    tr --;
    cout << v[tr].first << endl;
    return 0;
}
