#include <bits/stdc++.h>
using namespace std;
int x, y, n, a[33], b[33], dt[33][33], dp[(1 << 25)], bef[(1 << 25)];
int jl(int xx, int yy, int xxx, int yyy) {
  return abs(xx - xxx) * abs(xx - xxx) + abs(yy - yyy) * abs(yy - yyy);
}
int main() {
  cin >> x >> y >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i] >> b[i];
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      dt[i][j] = jl(a[i], b[i], a[j], b[j]) + jl(x, y, a[i], b[i]) +
                 jl(x, y, a[j], b[j]);
    }
  }
  memset(dp, -1, sizeof(dp));
  dp[0] = 1;
  for (int mk = 0; mk < (1 << n); mk++) {
    if (dp[mk] != -1) {
      for (int i = 0; i < n; i++) {
        if (mk & (1 << i)) {
          continue;
        }
        int t = mk | (1 << i);
        if (dp[mk] + dt[i][i] < dp[t] || dp[t] == -1) {
          dp[t] = dp[mk] + dt[i][i];
          bef[t] = mk;
        }
        for (int j = 0; j < n; j++) {
          if (t & (1 << j)) {
            continue;
          }
          int tt = t | (1 << j);
          if (dp[mk] + dt[i][j] < dp[tt] || dp[tt] == -1) {
            dp[tt] = dp[mk] + dt[i][j];
            bef[tt] = mk;
          }
        }
        break;
      }
    }
  }
  vector<int> ans;
  cout << dp[(1 << n) - 1] - 1 << endl;
  ans.push_back(0);
  int x = (1 << n) - 1;
  while (x) {
    int be = bef[x], now = be ^ x;
    for (int i = 0; i < n; i++) {
      if (now & (1 << i)) {
        ans.push_back(i + 1);
      }
    }
    ans.push_back(0);
    x = be;
  }
  for (int i = 0; i < ans.size(); i++) {
    cout << ans[i] << ' ';
  }
  cout << endl;
  return 0;
}
