#include <bits/stdc++.h>
using namespace std;
int dx[4] = {-1, 1, 0, 0};
int dy[4] = {0, 0, -1, 1};
bool isone(long long, int);
int count(long long);
long long exp(long long, long long, long long);
long long GCD(long long, long long);
int a[25][2];
int dist[25][25];
int d[25];
int dp[1 << 25];
int aux[1 << 25];
int main() {
  int x, y;
  scanf("%d%d", &x, &y);
  int n;
  scanf("%d", &n);
  for (int i = 0; i < (1 << 25); i++) dp[i] = 1000000000;
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &a[i][0], &a[i][1]);
    d[i] = (a[i][0] - x) * (a[i][0] - x) + (a[i][1] - y) * (a[i][1] - y);
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      dist[i][j] = dist[j][i] = (a[i][0] - a[j][0]) * (a[i][0] - a[j][0]) +
                                (a[i][1] - a[j][1]) * (a[i][1] - a[j][1]);
  dp[0] = 0;
  for (int i = 0; i < (1 << n); i++) {
    int idx = -1;
    for (int j = 0; j < n; j++)
      if (!(i & (1 << j))) {
        idx = j;
        break;
      }
    if (idx == -1) break;
    if (dp[i ^ (1 << idx)] > (dp[i] + 2 * d[idx])) {
      dp[i ^ (1 << idx)] = dp[i] + 2 * d[idx];
      aux[i ^ (1 << idx)] = i;
    }
    for (int j = 0; j < n; j++)
      if (!((i ^ (1 << idx)) & (1 << j))) {
        if (dp[i ^ (1 << idx) ^ (1 << j)] >
            (dist[idx][j] + dp[i] + d[idx] + d[j])) {
          dp[i ^ (1 << idx) ^ (1 << j)] = dist[idx][j] + dp[i] + d[idx] + d[j];
          aux[i ^ (1 << idx) ^ (1 << j)] = i;
        }
      }
  }
  printf("%d\n", dp[(1 << n) - 1]);
  int start = (1 << n) - 1;
  while (start) {
    cout << 0 << " ";
    for (int i = 0; i < n; i++)
      if ((start ^ (aux[start])) & (1 << i)) cout << i + 1 << " ";
    start = aux[start];
  }
  cout << 0 << " ";
  return 0;
}
long long GCD(long long a, long long b) {
  if (!b)
    return a;
  else
    return GCD(b, a % b);
}
long long exp(long long a, long long b, long long c) {
  long long ret = 1LL;
  long long mult = a;
  while (b) {
    if (b & 1) ret = (ret * mult) % c;
    mult = (mult * mult) % c;
    b >>= 1;
  }
  return ret;
}
int count(long long x) {
  int ret = 0;
  while (x) {
    if (x & 1) ret++;
    x >>= 1LL;
  }
  return ret;
}
bool isone(long long x, int pos) { return x & (1 << pos); }
