#include <bits/stdc++.h>
using namespace std;
const int inf = (1 << 30) - 1;
const long double eps = 1e-9;
const long double pi = fabs(atan2(0.0, -1.0));
int *ass;
void ML() {
  for (;;) {
    ass = new int[2500000];
    for (int i = 0; i < 2500000; i++) ass[i] = rand();
  }
}
int n, k, t;
struct node {
  int w;
  int r;
  node(int _w, int _r) : w(_w), r(_r){};
  node(){};
};
vector<node> a;
vector<vector<node> > c;
void LoAd() {
  cin >> n >> k >> t;
  a.resize(k);
  c.resize(n + 1);
  for (int h, w, r, i = 0; i < k; i++) {
    scanf("%d %d %d", &h, &w, &r);
    c[h].push_back(node(w, r));
  }
}
vector<int> was;
vector<int> res;
int tres = 0;
void dfs(const int v) {
  if (v == n + 1) {
    res.push_back(tres);
    return;
  }
  dfs(v + 1);
  for (int i = 0; i < (int)c[v].size(); i++) {
    if (!was[c[v][i].w]) {
      was[c[v][i].w] = true;
      tres += c[v][i].r;
      dfs(v + 1);
      tres -= c[v][i].r;
      was[c[v][i].w] = false;
    }
  }
}
void SoLvE() {
  was.resize(n + 1, false);
  dfs(1);
  sort(res.begin(), res.end());
  cout << res[t - 1];
}
int main() {
  srand((int)time(NULL));
  LoAd();
  SoLvE();
  return 0;
}
