#include <bits/stdc++.h>
inline int getint() {
  int x = 0, p = 1;
  char c = getchar();
  while (c <= 32) c = getchar();
  if (c == 45) p = -p, c = getchar();
  while (c > 32) x = x * 10 + c - 48, c = getchar();
  return x * p;
}
using namespace std;
const int N = 25;
int n, xs, ys, a[N], b[N];
int dp[(1 << (N - 1)) + 5], pre[(1 << (N - 1)) + 5];
vector<int> ans;
inline int f(int x) { return x * x; }
inline int getlen(int xv, int yv, int xu, int yu) {
  return f(xv - xu) + f(yv - yu);
}
int go(int mask) {
  if (dp[mask] >= 0) return dp[mask];
  if (!mask) return dp[mask] = 0;
  if (__builtin_popcount(mask) == 1) {
    for (int(i) = 0; (i) < (n); (i)++)
      if (mask & 1 << i) return dp[mask] = 2 * getlen(xs, ys, a[i], b[i]);
  }
  int ans = 1000000000;
  for (int(i) = 0; (i) < (n); (i)++)
    if (mask & 1 << i) {
      ans = min(ans, 2 * getlen(xs, ys, a[i], b[i]) + go(mask ^ (1 << i)));
      for (int j = i + 1; j < n; j++)
        if (mask & 1 << j) {
          int tmp = getlen(xs, ys, a[i], b[i]) + getlen(xs, ys, a[j], b[j]) +
                    getlen(a[i], b[i], a[j], b[j]) +
                    go(mask ^ (1 << i) ^ (1 << j));
          if (tmp < ans) {
            ans = tmp;
            pre[mask] = j + 1;
          }
        }
      return dp[mask] = ans;
    }
  return dp[mask] = 1000000000;
}
int main() {
  xs = getint();
  ys = getint();
  memset(dp, -1, sizeof(dp));
  n = getint();
  for (int(i) = 0; (i) < (n); (i)++) a[i] = getint(), b[i] = getint();
  printf("%d\n", go((1 << n) - 1));
  int msk = (1 << n) - 1;
  ans.push_back(0);
  while (msk) {
    if (__builtin_popcount(msk) == 1) {
      for (int(i) = 0; (i) < (n); (i)++)
        if (msk & 1 << i) {
          ans.push_back(i + 1);
          ans.push_back(0);
          break;
        }
      break;
    }
    for (int(i) = 0; (i) < (n); (i)++)
      if (msk & 1 << i) {
        ans.push_back(i + 1);
        if (pre[msk] > 0) {
          ans.push_back(pre[msk]);
          msk ^= (1 << (pre[msk] - 1));
        }
        msk ^= (1 << i);
        ans.push_back(0);
        continue;
      }
  }
  for (int(i) = 0; (i) < (ans.size()); (i)++) printf("%d ", ans[i]);
  printf("\n");
  return 0;
}
