#include <bits/stdc++.h>
using namespace std;
const int maxn = (1 << 24) + 10;
int dp[maxn], pre[maxn], ans[100], x[30], y[30], mp[30][30];
int main() {
  int x0, y0, n, cnt = 0;
  cin >> x0 >> y0 >> n;
  for (int i = 0; i < n; i++) {
    cin >> x[i] >> y[i];
  }
  x[n] = x0, y[n] = y0;
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      mp[i][j] = (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]);
    }
  }
  memset(dp, -1, sizeof(dp));
  dp[0] = 0;
  for (int i = 0; i < 1 << n; i++) {
    if (dp[i] != -1) {
      for (int j = 0; j < n; j++) {
        if (!(i & (1 << j))) {
          int tmp = dp[i] + 2 * mp[n][j];
          int t = (i | (1 << j));
          if (dp[t] == -1 || dp[t] > tmp) {
            dp[t] = tmp;
            pre[t] = i;
          }
          for (int k = 0; k < n; k++) {
            if (!(t & (1 << k))) {
              int t1 = t | (1 << k);
              tmp = dp[i] + mp[n][j] + mp[j][k] + mp[k][n];
              if (dp[t1] == -1 || dp[t1] > tmp) {
                dp[t1] = tmp;
                pre[t1] = i;
              }
            }
          }
          break;
        }
      }
    }
  }
  x0 = (1 << n) - 1;
  cout << dp[x0] << endl;
  int pr, tmp, a, b;
  while (x0) {
    pr = pre[x0];
    tmp = pr ^ x0;
    a = b = 0;
    for (int i = 0; i < n; i++) {
      if (tmp & (1 << i)) {
        b = a;
        a = i + 1;
      }
    }
    ans[++cnt] = 0;
    ans[++cnt] = a;
    if (b) {
      ans[++cnt] = b;
    }
    x0 = pr;
  }
  ans[++cnt] = 0;
  for (int i = 1; i <= cnt; i++) cout << ans[i] << " ";
  return 0;
}
