#include <bits/stdc++.h>
using namespace std;
int tab[1234], kar[1234], c[1243], ans[1234];
void bsort(int *tab, int nt) {
  int i, j, t;
  for (i = 1; i < nt; i++)
    for (j = 1; j < nt; j++)
      if (c[tab[j]] < c[tab[j - 1]])
        t = tab[j], tab[j] = tab[j - 1], tab[j - 1] = t;
}
int main(void) {
  int i, j, n, k, t, nt, nk;
  long long res;
  while (scanf(" %d %d", &n, &k) != EOF) {
    nt = nk = 0;
    res = 0;
    for (i = 0; i < n; i++) {
      scanf("%d %d", &c[i], &t);
      if (t == 1)
        tab[nt++] = i;
      else
        kar[nk++] = i;
      res += 2 * c[i];
    }
    bsort(tab, nt);
    bsort(kar, nk);
    for (i = 0; i < nt && i < k; i++) {
      ans[i] = tab[nt - i - 1];
      res -= c[tab[nt - i - 1]];
    }
    if (i == k) {
      res += c[tab[nt - i]];
      res -= min(c[tab[0]], c[kar[0]]);
      printf("%I64d.%I64d\n", res / 2, (res % 2) * 5);
      for (i = 0; i < k - 1; i++) printf("1 %d\n", ans[i] + 1);
      printf("%d ", n - k + 1);
      for (; i < nt; i++) printf("%d ", tab[nt - i - 1] + 1);
      for (i = 0; i < nk; i++) printf("%d ", kar[i] + 1);
      printf("\n");
    } else {
      printf("%I64d.%I64d\n", res / 2, (res % 2) * 5);
      for (i = 0; i < nt; i++) printf("1 %d\n", ans[i] + 1);
      for (j = 0; i < k - 1; i++, j++) printf("1 %d\n", kar[j] + 1);
      printf("%d ", n - k + 1);
      for (; j < nk; j++) printf("%d ", kar[j] + 1);
      printf("\n");
    }
  }
  return 0;
}
