#include <bits/stdc++.h>
using namespace std;
const int OO = 1e9;
const long long INF = 1e18;
const int irand(int lo, int hi) {
  return ((double)rand() / (RAND_MAX + 1.0)) * (hi - lo + 1) + lo;
}
const long long lrand(long long lo, long long hi) {
  return ((double)rand() / (RAND_MAX + 1.0)) * (hi - lo + 1) + lo;
}
template <typename T>
T getnum() {
  int sign = 1;
  T ret = 0;
  char c;
  do {
    c = getchar();
  } while (c == ' ' || c == '\n');
  if (c == '-')
    sign = -1;
  else
    ret = c - '0';
  while (1) {
    c = getchar();
    if (c < '0' || c > '9') break;
    ret = 10 * ret + c - '0';
  }
  return sign * ret;
}
inline void ini(int& x) { x = getnum<int>(); }
inline void scani(int& x) { scanf("%d", &x); }
const int N = 2e5 + 5;
int n, m, k;
pair<int, int> arr[N];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout.setf(ios::fixed);
  cout.setf(ios::showpoint);
  cout.precision(10);
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i += 1) {
    cin >> arr[i].first;
    arr[i].first *= -1;
    arr[i].second = i;
  }
  sort(arr + 1, arr + n + 1);
  long long ans = 0;
  for (int i = 1; i <= m * k; i += 1) ans += arr[i].first *= -1;
  for (int i = m * k + 1; i <= n; i += 1) arr[i].first = -OO - 5;
  for (int i = 1; i <= n; i += 1) swap(arr[i].first, arr[i].second);
  sort(arr + 1, arr + n + 1);
  cout << ans << '\n';
  int fr = 1;
  int curr = 0;
  for (int i = 1; i <= n; i += 1) {
    if (arr[i].second == -OO - 5) continue;
    curr++;
    if (curr == m) {
      k--;
      if (k == 0) break;
      cout << i << " ";
      curr = 0;
    }
  }
  cout << '\n';
  return 0;
}
