#include <bits/stdc++.h>
using namespace std;
const pair<int, int> DD[] = {{1, 0},  {1, 1},   {0, 1},  {-1, 1},
                             {-1, 0}, {-1, -1}, {0, -1}, {1, -1}};
template <class T>
T smin(T &a, T b) {
  if (a > b) a = b;
  return a;
}
template <class T>
T smax(T &a, T b) {
  if (a < b) a = b;
  return a;
}
int main(void) {
  srand(time(0));
  cout << fixed << setprecision(7);
  cerr << fixed << setprecision(7);
  static vector<pair<int, int> > g[1 << 20];
  int n, k;
  cin >> n >> k;
  int m;
  cin >> m;
  while (m--) {
    int a, b, c;
    cin >> a >> b >> c;
    if (a == b) continue;
    g[a].push_back(make_pair(b, c));
  }
  static int D[88][88][88][2];
  memset(D, -1, sizeof(D));
  for (int i = 1; i <= n; ++i) D[i][n + 1][1][1] = D[0][i][1][0] = 0;
  for (int t = 1; t < k; ++t) {
    for (int i = 0; i <= n + 1; ++i)
      for (int j = i; j <= n + 1; ++j) {
        if (D[i][j][t][0] != -1)
          for (auto it : g[j])
            if (i <= it.first && it.first < j) {
              const int C = D[i][j][t][0];
              int &ans1 = D[i][it.first][t + 1][0];
              int &ans2 = D[it.first][j - 1][t + 1][1];
              if (ans1 == -1 || ans1 > C + it.second) ans1 = C + it.second;
              if (ans2 == -1 || ans2 > C + it.second) ans2 = C + it.second;
            }
        if (D[i][j][t][1] != -1)
          for (auto it : g[i])
            if (i < it.first && it.first <= j) {
              const int C = D[i][j][t][1];
              int &ans1 = D[i + 1][it.first][t + 1][0];
              int &ans2 = D[it.first][j][t + 1][1];
              if (ans1 == -1 || ans1 > C + it.second) ans1 = C + it.second;
              if (ans2 == -1 || ans2 > C + it.second) ans2 = C + it.second;
            }
      }
  }
  int ans = 1e9;
  for (int i = 0; i <= n + 1; ++i)
    for (int j = i; j <= n + 1; ++j) {
      if (D[i][j][k][0] != -1) smin(ans, D[i][j][k][0]);
      if (D[i][j][k][1] != -1) smin(ans, D[i][j][k][1]);
    }
  if (ans == 1e9)
    puts("-1");
  else
    cout << ans << '\n';
  cerr << "Time elapsed :" << clock() * 1000.0 / CLOCKS_PER_SEC << " ms"
       << '\n';
  return 0;
}
