#include <bits/stdc++.h>
using namespace std;
int dx8[] = {1, 1, 0, -1, -1, -1, 0, 1};
int dy8[] = {0, 1, 1, 1, 0, -1, -1, -1};
int dx4[] = {1, 0, -1, 0};
int dy4[] = {0, 1, 0, -1};
template <typename Arg1>
void __f(const char *name, Arg1 &&arg1) {
  cerr << name << " : " << arg1 << "\n";
  ;
}
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args &&...args) {
  const char *comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
template <class A, class B>
ostream &operator<<(ostream &out, const pair<A, B> &a) {
  return out << "(" << a.first << "," << a.second << ")";
}
template <class A>
ostream &operator<<(ostream &out, const vector<A> &a) {
  for (const A &it : a) out << it << " ";
  return out;
}
template <class A, class B>
istream &operator>>(istream &in, pair<A, B> &a) {
  return in >> a.first >> a.second;
}
template <class A>
istream &operator>>(istream &in, vector<A> &a) {
  for (A &i : a) in >> i;
  return in;
}
template <typename T, typename T1>
T amax(T &a, T1 b) {
  if (b > a) a = b;
  return a;
}
template <typename T, typename T1>
T amin(T &a, T1 b) {
  if (b < a) a = b;
  return a;
}
void solve() {
  long long n, m, k;
  cin >> n >> m >> k;
  multiset<long long> mp;
  vector<long long> v(n);
  cin >> v;
  vector<long long> t = v;
  sort((t).begin(), (t).end(), greater<long long>());
  long long sum = 0;
  for (long long i = 0; i < m * k; i++) {
    mp.insert(t[i]);
    sum += t[i];
  }
  int i = 0;
  vector<long long> res;
  while (i < n) {
    int j = i;
    int cnt = 0;
    while (j < n && cnt < m) {
      if (mp.find(v[j]) != mp.end()) {
        mp.erase(mp.find(v[j]));
        cnt++;
      }
      j++;
    }
    res.push_back(j);
    if ((int)((mp).size()) == m) {
      break;
    }
    i = j;
  }
  cout << sum << "\n";
  ;
  cout << res << "\n";
  ;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
