#include #include #include #include #include #define inf 1e9 using namespace std; pair point[20]; bool fix[20]; double dp[1<<18]; double Distance(int a, int b) { int x1 = point[a].first, y1 = point[a].second; int x2 = point[b].first, y2 = point[b].second; return sqrt(1.0*(x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2)); } double Fixed(int n, int state, int cur) { double ans = 0; bool mark[20]; double dist[20]; for (int i = 0; i < n; ++i) { if (((1<= inf) return -1; return ans; } int main() { int n; while (cin>>n) { if (!n) break; int begin = 0, target = 0; for (int i = 0; i < n; ++i) { cin>>point[i].first>>point[i].second>>fix[i]; if (fix[i]) begin += (1<= 0) dp[i|(1<