#include <bits/stdc++.h>
using namespace std;
const int maxm = 25;
const int maxn = 105;
const int inf = 0x3f3f3f3f;
int xs, ys, n, num, pos[maxn][2];
int dp[1 << maxm], pre[1 << maxm];
int pr[maxn][maxn], sngl[maxn];
int pw(int x) { return x * x; }
int solve(int msk) {
  if (msk == num) return 0;
  if (dp[msk] != -1) return dp[msk];
  int minv = inf;
  for (int i = 0; i < n; i++) {
    if ((msk & (1 << i)) == 0) {
      int xx = (msk | (1 << i));
      int cur1 = sngl[i] * 2 + solve(xx);
      if (cur1 < minv) {
        minv = cur1;
        pre[msk] = xx;
      }
      for (int j = 0; j < n; j++) {
        if ((xx & (1 << j)) == 0 && sngl[i] + sngl[j] > pr[i][j]) {
          int cur2 = solve(xx | (1 << j)) + pr[i][j] + sngl[i] + sngl[j];
          if (cur2 < minv) {
            minv = cur2;
            pre[msk] = (xx | (1 << j));
          }
        }
      }
      break;
    }
  }
  dp[msk] = minv;
  return minv;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> xs >> ys >> n;
  num = (1 << n) - 1;
  memset(dp, -1, sizeof(dp));
  for (int i = 0; i < n; i++) cin >> pos[i][0] >> pos[i][1];
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      pr[i][j] = pw(pos[i][1] - pos[j][1]) + pw(pos[i][0] - pos[j][0]);
  for (int i = 0; i < n; i++) sngl[i] = pw(pos[i][0] - xs) + pw(pos[i][1] - ys);
  cout << solve(0) << endl;
  cout << "0 ";
  int xxx = 0;
  while (xxx != num) {
    int yy = pre[xxx];
    for (int i = 0; i < n; i++)
      if (((1 << i) & yy) != 0 && ((1 << i) & xxx) == 0) cout << i + 1 << " ";
    cout << "0 ";
    xxx = yy;
  }
  cout << endl;
  return 0;
}
