#include <bits/stdc++.h>
using namespace std;
template <typename T>
bool read(T& x) {
  static char buf[1 << 21], *p1 = buf, *p2 = buf;
  static char tc;
  static bool sign;
  for (tc = (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin)),
             p1 == p2 ? EOF : *p1++),
      x = 0, sign = false;
       (tc < '0' || '9' < tc) && tc != EOF && tc != '-';
       tc = (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin)),
             p1 == p2 ? EOF : *p1++))
    ;
  if (EOF == tc) return false;
  for (tc == '-'
       ? tc = (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin)),
               p1 == p2 ? EOF : *p1++),
         sign = true : false;
       '0' <= tc && tc <= '9';
       tc = (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin)),
             p1 == p2 ? EOF : *p1++))
    x = (x << 1) + (x << 3) + tc - '0';
  if (sign) x = -x;
  return true;
}
template <typename T>
void write(const T& x) {
  if (x > 9) write(x / 10);
  putchar(x % 10 + '0');
}
const int mod = 7 + 1e9;
const int N = 10 + 2e5;
long long arr[N];
pair<long long, int> brr[N];
int n, m, k;
int vis[N];
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= n; ++i) {
    scanf("%lld", &arr[i]);
    brr[i].first = arr[i];
    brr[i].second = i;
  }
  sort(brr + 1, brr + n + 1, greater<pair<long long, int> >());
  long long ans = 0;
  for (int i = m * k; i; --i) {
    ans += brr[i].first;
    vis[brr[i].second] = 1;
  }
  printf("%lld\n", ans);
  int tot = 0;
  for (int mm = m, i = 1; i <= n; ++i) {
    if (vis[i]) {
      if (--mm == 0) {
        if (++tot != k) printf("%d ", i);
        mm = m;
      }
    }
  }
  return 0;
}
