#include <bits/stdc++.h>
using namespace std;
int girl[2], objects[24][2], dp[1 << 24], pre[1 << 24];
int arc[24 + 1][24 + 1];
int dis(int ax, int ay, int bx, int by) {
  int x = ax - bx, y = ay - by;
  return x * x + y * y;
}
int main() {
  int n, i, x, t, p, goal;
  int temp;
  while (~scanf("%d%d", &girl[0], &girl[1])) {
    scanf("%d", &n);
    for (i = 0; i < n; i++) scanf("%d%d", &objects[i][0], &objects[i][1]);
    for (i = 1; i <= n; i++)
      arc[i][0] = arc[0][i] =
          dis(girl[0], girl[1], objects[i - 1][0], objects[i - 1][1]);
    for (i = 1; i <= n; i++)
      for (x = i; x <= n; x++)
        arc[i][x] = arc[x][i] = dis(objects[i - 1][0], objects[i - 1][1],
                                    objects[x - 1][0], objects[x - 1][1]);
    memset(pre, -1, sizeof(pre));
    dp[0] = 0;
    goal = (1 << n) - 1;
    for (t = 1; t <= goal; t++)
      for (i = 0; i < n; i++)
        if (t & (1 << i)) {
          temp = arc[0][i + 1] << 1;
          p = (t ^ (1 << i));
          if (pre[t] == -1 || dp[t] > dp[p] + temp)
            dp[t] = dp[p] + temp, pre[t] = p;
          for (x = i + 1; x < n; x++)
            if (t & (1 << x)) {
              temp = arc[0][i + 1] + arc[0][x + 1] + arc[i + 1][x + 1];
              p = t ^ (1 << i) ^ (1 << x);
              if (pre[t] == -1 || dp[t] > dp[p] + temp)
                dp[t] = dp[p] + temp, pre[t] = p;
            }
          break;
        }
    x = goal;
    printf("%d\n", dp[x]);
    while (x) {
      printf("0 ");
      t = pre[x];
      for (i = 0; i < n; i++)
        if ((x & (1 << i)) && !(t & (1 << i))) printf("%d ", i + 1);
      x = t;
    }
    printf("0\n");
  }
  return 0;
}
