#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <vector>
#include <complex>
using namespace std;

typedef complex<double> P;
typedef pair<P,P> L;
const double EPS = 1e-8;

double dot(P a, P b){ return real(conj(a)*b);}

double cross(P a, P b){ return imag(conj(a)*b);}

int ccw(P a, P b, P c){
  b -= a;
  c -= a;
  if(cross(b,c) > EPS) return 1;
  if(cross(b,c) < -EPS) return -1;
  if(dot(b,c) < -EPS) return 2;
  if(norm(b) < norm(c)) return -2;
  return 0;
}

P crossPoint(L l, L m){
  double A = cross(l.second - l.first, m.second - m.first);
  double B = cross(l.second - l.first, l.second - m.first);
  if(fabs(A) < EPS && fabs(B) < EPS) return m.first;
  else if(fabs(A) >= EPS) return m.first + B / A * (m.second - m.first);
}

vector<P> convex_cut(vector<P> G, L l){
  vector<P> ans;
  for(int i=0;i<G.size();i++){
    P A = G[i];
    P B = G[(i+1)%G.size()];
    if(ccw(l.first, l.second, A) != -1) ans.push_back(A);
    if(ccw(l.first, l.second, A) * ccw(l.first, l.second, B) < 0){
      L ll(A,B);
      ans.push_back(crossPoint(ll,l));
    }
  }
  return ans;
}

double area(vector<P> v){
  double sum = 0.0;
  int n = v.size();
  for(int i=0;i<n;i++)
    sum += (real(v[i]) - real(v[(i+1)%n])) * (imag(v[i]) + imag(v[(i+1)%n]));
  sum = fabs(sum);
  return sum / 2.0;
}

int main(){
  int x[3], y[3];
  int T = 1;
  while(cin >> x[0] >> y[0] >> x[1] >> y[1] >> x[2] >> y[2] && (x[0]|y[0]|x[1]|y[1]|x[2]|y[2])){
    vector<P> v;
    v.push_back(P(0.0,0.0));
    v.push_back(P(10000.0,0.0));
    v.push_back(P(10000.0,10000.0));
    v.push_back(P(0.0,10000.0));
    P p[3];
    for(int i=0;i<3;i++) p[i] = P((double)x[i], (double)y[i]);
    for(int i=0;i<2;i++){
      L l;
      P a = P(-imag(p[i+1]-p[0]), real(p[i+1]-p[0]));
      P b = p[0] + (p[i+1]-p[0])/2.0;
      l = L(b, a+b);
      //l = L(a+b, b);
      v = convex_cut(v,l);
    }
    printf("%d %.5f\n", T++, area(v) / 100000000.0);
  }
}