#include <bits/stdc++.h>
using namespace std;
struct edge {
  int h, w, r;
  long long msk;
  bool operator<(const edge &t) const { return r < t.r; }
} es[110];
int val, cnt;
int n, k, t;
void dfs(int id, long long msk, int cur) {
  if (cnt >= t) return;
  if (id >= k) return;
  if (cur + es[id].r > val) return;
  if (!(msk & es[id].msk)) {
    cnt++;
    dfs(id + 1, msk | es[id].msk, cur + es[id].r);
  }
  dfs(id + 1, msk, cur);
}
int main() {
  scanf("%d%d%d", &n, &k, &t);
  for (int i = 0; i < k; i++) {
    scanf("%d%d%d", &es[i].h, &es[i].w, &es[i].r);
    es[i].msk = (1ll << (es[i].h + n)) | (1ll << es[i].w);
  }
  sort(es, es + k);
  for (val = 0;; val++) {
    cnt = 1;
    dfs(0, 0, 0);
    if (cnt >= t) {
      printf("%d\n", val);
      return 0;
    }
  }
}
