#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e6 + 5000;
long long n, m, k;
long long a[maxn];
int vis[maxn];
int xx[4] = {1, -1, 1, -1};
int yy[4] = {-1, 1, 1, -1};
priority_queue<pair<long long, long long> > q;
long long ans;
struct node {
  int x, id;
} g[maxn];
int main() {
  while (cin >> n >> m >> k) {
    long long sum = 0;
    int num = 0, num1 = 0;
    memset(vis, 0, sizeof(vis));
    while (!q.empty()) q.pop();
    for (int i = 1; i <= n; i++) {
      pair<int, int> p;
      cin >> p.first;
      p.second = i;
      q.push(p);
    }
    for (int i = 1; i <= m * k; i++) {
      ans += q.top().first;
      vis[q.top().second] = 1;
      q.pop();
    }
    cout << ans << endl;
    int cnt = 0;
    for (int i = 1; i < n; i++) {
      num += vis[i];
      if (num == m) {
        cout << i << " ";
        num = 0;
        cnt++;
      }
      if (cnt == k - 1) break;
    }
    cout << endl;
  }
  return 0;
}
