#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, k, x, y, z, m;
  cin >> n >> m >> k;
  vector<pair<int, int> > a;
  vector<pair<int, int> > b;
  vector<pair<int, int> > c;
  vector<pair<int, int> > e;
  long long unsigned int ans = 0;
  for (int i = 0; i < n; i++) {
    cin >> x >> y >> z;
    if (z + y == 2)
      a.push_back(make_pair(x, i + 1));
    else if (z == 1)
      b.push_back(make_pair(x, i + 1));
    else if (y == 1)
      c.push_back(make_pair(x, i + 1));
    else
      e.push_back(make_pair(x, i + 1));
  }
  if ((b.size() + a.size() < k) || (c.size() + a.size() < k)) {
    cout << -1 << "\n";
  } else if (m == k) {
    if (a.size() >= k) {
      sort(a.begin(), a.end());
      for (int i = 0; i < k; i++) {
        ans += a[i].first;
      }
      cout << ans << "\n";
      for (int i = 0; i < k; i++) {
        cout << a[i].second << " ";
      }
    } else
      cout << -1 << "\n";
  } else if (m < 2 * k) {
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    sort(c.begin(), c.end());
    sort(e.begin(), e.end());
    vector<pair<int, int> > d;
    long long int yy;
    if (b.size() > c.size()) {
      if (k > c.size())
        yy = c.size();
      else
        yy = k;
    } else {
      if (k > b.size())
        yy = b.size();
      else
        yy = k;
    }
    a.push_back(make_pair(INT_MAX / 2, 0));
    b.push_back(make_pair(INT_MAX / 2, 0));
    c.push_back(make_pair(INT_MAX / 2, 0));
    e.push_back(make_pair(INT_MAX / 2, 0));
    for (int i = 0; i < yy; i++)
      d.push_back(
          make_pair(b[i].first + c[i].first, b[i].second + c[i].second));
    d.push_back(make_pair(INT_MAX / 2, 0));
    if (yy == 0) {
      vector<int> aans;
      for (int i = 0; i < k; i++) {
        ans += a[i].first;
        aans.push_back(a[i].second);
      }
      d.clear();
      int uu = 0;
      int ree = k;
      int ww = 0;
      int kk = 0;
      while ((c[uu].first != INT_MAX) || (b[ww].first != INT_MAX) ||
             (e[kk].first != INT_MAX)) {
        if (c[uu].first > b[ww].first) {
          if (e[kk].first > b[ww].first)
            d.push_back(b[ww++]);
          else
            d.push_back(e[kk++]);
        } else {
          if (e[kk].first > c[uu].first)
            d.push_back(c[uu++]);
          else
            d.push_back(e[kk++]);
        }
      }
      d.push_back(make_pair(INT_MAX / 2, 0));
      int s = 0;
      int t = k;
      while (ree < m) {
        if (d[s].first <= a[t].first) {
          ans += d[s].first;
          aans.push_back(d[s++].second);
        } else {
          ans += a[t].first;
          aans.push_back(a[t++].second);
        }
        ree++;
      }
      cout << ans << "\n";
      for (int i = 0; i < aans.size(); i++) cout << aans[i] << " ";
    } else {
      int r = 0, s = 0, t = 2 * k - m, l = 0;
      vector<int> aans;
      if (a.size() - 1 < 2 * k - m)
        cout << -1 << "\n";
      else {
        int ree = 2 * k - m;
        for (int i = 0; i < 2 * k - m; i++) {
          ans += a[i].first;
          aans.push_back(a[i].second);
        }
        int yyy = yy;
        while (r < m - k) {
          if (d[s].first <= a[t].first) {
            ans += d[s].first;
            aans.push_back(b[s].second);
            aans.push_back(c[s++].second);
            ree += 2;
          } else {
            if (c[yy].first < b[yyy].first) {
              if (c[yy].first > e[l].first) {
                if (e[l].first < min(b[s].first, c[s].first)) {
                  if (e[l].first + a[t].first < b[s].first + c[s].first) {
                    ans += a[t].first + e[l].first;
                    aans.push_back(a[t++].second);
                    aans.push_back(e[l++].second);
                    ree += 2;
                  } else {
                    ans += d[s].first;
                    aans.push_back(b[s].second);
                    aans.push_back(c[s++].second);
                    ree += 2;
                  }
                } else {
                  if (min(c[s].first, b[s].first) + a[t].first <
                      b[s].first + c[s].first) {
                    ans += a[t].first;
                    aans.push_back(a[t++].second);
                    ree += 1;
                  } else {
                    ans += d[s].first;
                    aans.push_back(b[s].second);
                    aans.push_back(c[s++].second);
                    ree += 2;
                  }
                }
              } else {
                if (c[yy].first < min(b[s].first, c[s].first)) {
                  if (c[yy].first + a[t].first < b[s].first + c[s].first) {
                    ans += a[t].first + c[yy].first;
                    aans.push_back(a[t++].second);
                    aans.push_back(c[yy].second);
                    c.erase(c.begin() + yy);
                    ree += 2;
                  } else {
                    ans += d[s].first;
                    aans.push_back(b[s].second);
                    aans.push_back(c[s++].second);
                    ree += 2;
                  }
                } else {
                  if (min(c[s].first, b[s].first) + a[t].first <
                      b[s].first + c[s].first) {
                    ans += a[t].first;
                    aans.push_back(a[t++].second);
                    ree += 1;
                  } else {
                    ans += d[s].first;
                    aans.push_back(b[s].second);
                    aans.push_back(c[s++].second);
                    ree += 2;
                  }
                }
              }
            } else {
              if (b[yyy].first > e[l].first) {
                if (e[l].first < min(b[s].first, c[s].first)) {
                  if (e[l].first + a[t].first < b[s].first + c[s].first) {
                    ans += a[t].first + e[l].first;
                    aans.push_back(a[t++].second);
                    aans.push_back(e[l++].second);
                    ree += 2;
                  } else {
                    ans += d[s].first;
                    aans.push_back(b[s].second);
                    aans.push_back(c[s++].second);
                    ree += 2;
                  }
                } else {
                  if (min(c[s].first, b[s].first) + a[t].first <
                      b[s].first + c[s].first) {
                    ans += a[t].first;
                    aans.push_back(a[t++].second);
                    ree += 1;
                  } else {
                    ans += d[s].first;
                    aans.push_back(b[s].second);
                    aans.push_back(c[s++].second);
                    ree += 2;
                  }
                }
              } else {
                if (b[yyy].first < min(b[s].first, c[s].first)) {
                  if (b[yy].first + a[t].first < b[s].first + c[s].first) {
                    ans += a[t].first + b[yyy].first;
                    aans.push_back(a[t++].second);
                    aans.push_back(b[yyy].second);
                    b.erase(b.begin() + yyy);
                    ree += 2;
                  } else {
                    ans += d[s].first;
                    aans.push_back(b[s].second);
                    aans.push_back(c[s++].second);
                    ree += 2;
                  }
                } else {
                  if (min(c[s].first, b[s].first) + a[t].first <
                      b[s].first + c[s].first) {
                    ans += a[t].first;
                    aans.push_back(a[t++].second);
                    ree += 1;
                  } else {
                    ans += d[s].first;
                    aans.push_back(b[s].second);
                    aans.push_back(c[s++].second);
                    ree += 2;
                  }
                }
              }
            }
          }
          r++;
        }
        d.clear();
        int uu = s;
        int ww = s;
        int kk = l;
        while ((c[uu].first != INT_MAX / 2) || (b[ww].first != INT_MAX / 2) ||
               (e[kk].first != INT_MAX / 2)) {
          if (c[uu].first > b[ww].first) {
            if (e[kk].first > b[ww].first)
              d.push_back(b[ww++]);
            else
              d.push_back(e[kk++]);
          } else {
            if (e[kk].first > c[uu].first)
              d.push_back(c[uu++]);
            else
              d.push_back(e[kk++]);
          }
        }
        d.push_back(make_pair(INT_MAX / 2, 0));
        s = 0;
        while (ree < m) {
          if (d[s].first <= a[t].first) {
            ans += d[s].first;
            aans.push_back(d[s++].second);
          } else {
            ans += a[t].first;
            aans.push_back(a[t++].second);
          }
          ree++;
        }
        cout << ans << "\n";
        for (int i = 0; i < aans.size(); i++) cout << aans[i] << " ";
      }
    }
  } else {
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    sort(c.begin(), c.end());
    sort(e.begin(), e.end());
    vector<pair<int, int> > d;
    long long int yy;
    if (b.size() > c.size()) {
      yy = c.size();
    } else {
      yy = b.size();
    }
    a.push_back(make_pair(INT_MAX / 2, 0));
    b.push_back(make_pair(INT_MAX / 2, 0));
    c.push_back(make_pair(INT_MAX / 2, 0));
    e.push_back(make_pair(INT_MAX / 2, 0));
    for (int i = 0; i < yy; i++)
      d.push_back(
          make_pair(b[i].first + c[i].first, b[i].second + c[i].second));
    d.push_back(make_pair(INT_MAX / 2, 0));
    int r = 0, s = 0, t = 0, ree = 0, l = 0;
    vector<int> aans;
    int yyy = yy;
    vector<int> yt;
    vector<pair<int, int> > v;
    while (r < k) {
      if (d[s].first <= a[t].first) {
        ans += d[s].first;
        aans.push_back(b[s].second);
        aans.push_back(c[s++].second);
        ree += 2;
      } else if (a[t].first + a[t + 1].first <= c[s].first + b[s].first) {
        ans += a[t].first + a[t + 1].first;
        aans.push_back(a[t++].second);
        aans.push_back(a[t++].second);
        ree += 2;
        r++;
      } else {
        if (c[yy].first < b[yyy].first) {
          if (c[yy].first >= e[l].first) {
            if (e[l].first <= min(b[s].first, c[s].first)) {
              if (e[l].first <= a[t + 1].first) {
                if (e[l].first + a[t].first <= b[s].first + c[s].first) {
                  ans += a[t].first + e[l].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(e[l++].second);
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              } else {
                if (a[t + 1].first + a[t].first <= b[s].first + c[s].first) {
                  ans += a[t].first + a[t + 1].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(a[t++].second);
                  r++;
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              }
            } else {
              if (min(c[s].first, b[s].first) < a[t + 1].first) {
                if (min(c[s].first, b[s].first) + a[t].first <
                    b[s].first + c[s].first) {
                  v.push_back(make_pair(a[t].first, aans.size()));
                  yt.push_back(a[t].second);
                  ans += a[t].first;
                  aans.push_back(a[t++].second);
                  ree += 1;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              } else {
                if (a[t + 1].first + a[t].first <= b[s].first + c[s].first) {
                  ans += a[t].first + a[t + 1].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(a[t++].second);
                  r++;
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              }
            }
          } else {
            if (c[yy].first < min(b[s].first, c[s].first)) {
              if (c[yy].first < a[t + 1].first) {
                if (c[yy].first + a[t].first < b[s].first + c[s].first) {
                  ans += a[t].first + c[yy].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(c[yy].second);
                  c.erase(c.begin() + yy);
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              } else {
                if (a[t + 1].first + a[t].first <= b[s].first + c[s].first) {
                  ans += a[t].first + a[t + 1].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(a[t++].second);
                  r++;
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              }
            } else {
              if (min(c[s].first, b[s].first) < a[t + 1].first) {
                if (min(c[s].first, b[s].first) + a[t].first <
                    b[s].first + c[s].first) {
                  v.push_back(make_pair(a[t].first, aans.size()));
                  yt.push_back(a[t].second);
                  ans += a[t].first;
                  aans.push_back(a[t++].second);
                  ree += 1;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              } else {
                if (a[t + 1].first + a[t].first <= b[s].first + c[s].first) {
                  ans += a[t].first + a[t + 1].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(a[t++].second);
                  r++;
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              }
            }
          }
        } else {
          if (b[yyy].first >= e[l].first) {
            if (e[l].first <= min(b[s].first, c[s].first)) {
              if (e[l].first < a[t + 1].first) {
                if (e[l].first + a[t].first <= b[s].first + c[s].first) {
                  ans += a[t].first + e[l].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(e[l++].second);
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              } else {
                if (a[t + 1].first + a[t].first <= b[s].first + c[s].first) {
                  ans += a[t].first + a[t + 1].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(a[t++].second);
                  r++;
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              }
            } else {
              if (a[t + 1].first > min(c[s].first, b[s].first)) {
                if (min(c[s].first, b[s].first) + a[t].first <
                    b[s].first + c[s].first) {
                  v.push_back(make_pair(a[t].first, aans.size()));
                  yt.push_back(a[t].second);
                  ans += a[t].first;
                  aans.push_back(a[t++].second);
                  ree += 1;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              } else {
                if (a[t + 1].first + a[t].first <= b[s].first + c[s].first) {
                  ans += a[t].first + a[t + 1].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(a[t++].second);
                  r++;
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              }
            }
          } else {
            if (b[yyy].first <= min(b[s].first, c[s].first)) {
              if (a[t + 1].first > b[yyy].first) {
                if (b[yyy].first + a[t].first <= b[s].first + c[s].first) {
                  ans += a[t].first + b[yyy].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(b[yyy].second);
                  b.erase(b.begin() + yyy);
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              } else {
                if (a[t + 1].first + a[t].first <= b[s].first + c[s].first) {
                  ans += a[t].first + a[t + 1].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(a[t++].second);
                  r++;
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              }
            } else {
              if (a[t + 1].first > min(c[s].first, b[s].first)) {
                if (min(c[s].first, b[s].first) + a[t].first <
                    b[s].first + c[s].first) {
                  v.push_back(make_pair(a[t].first, aans.size()));
                  yt.push_back(a[t].second);
                  ans += a[t].first;
                  aans.push_back(a[t++].second);
                  ree += 1;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              } else {
                if (a[t + 1].first + a[t].first <= b[s].first + c[s].first) {
                  ans += a[t].first + a[t + 1].first;
                  aans.push_back(a[t++].second);
                  aans.push_back(a[t++].second);
                  r++;
                  ree += 2;
                } else {
                  ans += d[s].first;
                  aans.push_back(b[s].second);
                  aans.push_back(c[s++].second);
                  ree += 2;
                }
              }
            }
          }
        }
      }
      r++;
    }
    vector<pair<int, int> > aa;
    int x = 0;
    for (int i = 0; i < v.size(); i++) {
      if (v[i].first +
              min(min(a[t].first, e[l].first), min(b[s].first, c[s].first)) <=
          b[s].first + c[s].first) {
        if (b[s].first < c[s].first) {
          if (e[l].first <= b[s].first) {
            if (e[l].first <= a[t].first) {
              aans.push_back(e[l].second);
              ans += e[l++].first;
              ree++;
            } else {
              aans.push_back(a[t].second);
              ans += a[t++].first;
              ree++;
            }
          } else {
            if (b[s].first < a[t].first) {
              aans.push_back(b[s].second);
              ans += b[s].first;
              b.erase(b.begin() + s);
              ree++;
            } else {
              aans.push_back(a[t].second);
              ans += a[t++].first;
              ree++;
            }
          }
        } else {
          if (e[l].first <= c[s].first) {
            if (e[l].first <= a[t].first) {
              aans.push_back(e[l].second);
              ans += e[l++].first;
              ree++;
            } else {
              aans.push_back(a[t].second);
              ans += a[t++].first;
              ree++;
            }
          } else {
            if (a[t].first > c[s].first) {
              aans.push_back(c[s].second);
              ans += c[s].first;
              c.erase(c.begin() + s);
              ree++;
            } else {
              aans.push_back(a[t].second);
              ans += a[t++].first;
              ree++;
            }
          }
        }
      } else {
        ans -= v[i].first;
        aans.erase(aans.begin() + v[i].second - x);
        x++;
        ans += b[s].first + c[s].first;
        aans.push_back(b[s].second);
        aans.push_back(c[s++].second);
        aa.push_back(make_pair(v[i].first, yt[i]));
        ree++;
      }
    }
    int tt = t;
    for (int i = 0; i < aa.size(); i++) {
      a.insert(a.begin() + tt, aa[i]);
      tt++;
    }
    d.clear();
    int uu = s;
    int ww = s;
    int kk = l;
    while ((c[uu].first != INT_MAX / 2) || (b[ww].first != INT_MAX / 2) ||
           (e[kk].first != INT_MAX / 2)) {
      if (c[uu].first > b[ww].first) {
        if (e[kk].first > b[ww].first)
          d.push_back(b[ww++]);
        else
          d.push_back(e[kk++]);
      } else {
        if (e[kk].first > c[uu].first)
          d.push_back(c[uu++]);
        else
          d.push_back(e[kk++]);
      }
    }
    s = 0;
    d.push_back(make_pair(INT_MAX / 2, 0));
    while (ree < m) {
      if (d[s].first <= a[t].first) {
        ans += d[s].first;
        aans.push_back(d[s++].second);
      } else {
        ans += a[t].first;
        aans.push_back(a[t++].second);
      }
      ree++;
    }
    cout << ans << "\n";
    for (int i = 0; i < aans.size(); i++) cout << aans[i] << " ";
  }
}
