#include <bits/stdc++.h>
using namespace std;
const int MAXN = 33554432 + 10;
const int INF = 0x3f3f3f3f;
typedef struct Position_ {
  int x, y;
} Position;
Position p[30], src;
int n;
int f[MAXN], pre[MAXN], cost[30][30], min_dis_idx[30];
bool Input(void) {
  if (EOF == scanf("%d %d", &p[0].x, &p[0].y)) {
    return false;
  }
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d %d", &p[i].x, &p[i].y);
  }
  return true;
}
int Cost(int a, int b) {
  return (p[a].x - p[b].x) * (p[a].x - p[b].x) +
         (p[a].y - p[b].y) * (p[a].y - p[b].y);
}
inline int Opt(int status) {
  int &ans = f[status];
  int &p_ans = pre[status];
  if (-1 != ans) {
    return ans;
  }
  if (!status) {
    return ans = 0;
  }
  ans = INF;
  for (int i = 1; i <= n; i++) {
    if (!(status & (1 << i))) {
      continue;
    }
    int t_status = status ^ (1 << i);
    int t_val = Opt(t_status) + 2 * cost[0][i];
    if (ans > t_val) {
      ans = t_val;
      p_ans = t_status;
    }
    for (int idx = 1; idx <= n; idx++) {
      if (idx == i) {
        continue;
      }
      if (!(status & (1 << idx))) {
        continue;
      }
      t_status = status ^ (1 << i);
      t_status = t_status ^ (1 << idx);
      t_val = Opt(t_status) + cost[0][i] + cost[i][idx] + cost[idx][0];
      if (ans > t_val) {
        ans = t_val;
        p_ans = t_status;
      }
    }
    break;
  }
  return ans;
}
inline void DFS(int status) {
  int p_status = pre[status];
  if (-1 == p_status) {
    return;
  }
  for (int i = 0; i <= n; i++) {
    if (status & (1 << i) && !(p_status & (1 << i))) {
      printf("%d ", i);
    }
  }
  printf("0 ");
  DFS(p_status);
}
void Process(void) {
  int end = (1 << (n + 1)) - 1;
  end -= 1;
  memset(f, -1, sizeof(int) * (end + 1));
  memset(pre, -1, sizeof(int) * (end + 1));
  for (int i = 0; i <= n; i++) {
    for (int j = i; j <= n; j++) {
      cost[j][i] = cost[i][j] = Cost(i, j);
    }
  }
  printf("%d\n0 ", Opt(end));
  DFS(end);
  printf("\n");
}
int main(int argc, char const *argv[]) {
  while (true == Input()) {
    Process();
  }
  return 0;
}
