#include<bits/stdc++.h>
using namespace std;
typedef complex<double> P;

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

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

P init(P a){
  return a/max(0.0001,abs(a));
}

int ax,ay,bx,by,cx,cy;

P A,B,C;
double sinA,cosA,sinB,cosB,sinC,cosC;

double funcC(double ra){
  double L=0,R=10000,M;
  for(int i=0;i<50;i++){
    M=(L+R)/2.0;
    if( M/sinC*cosC + ra/sinA*cosA + sqrt( 4.0*ra*M ) < abs(A-C) ) L=M;
    else R=M;
  }
  return L;
}

double funcB(double ra){
  double L=0,R=10000,M;
  for(int i=0;i<50;i++){
    M=(L+R)/2.0;
    if( M/sinB*cosB + ra/sinA*cosA + sqrt( 4.0*ra*M ) < abs(A-B) ) L=M;
    else R=M;
  }
  return L;
}

bool check(double ra){
  double rb=funcB(ra);
  double rc=funcC(ra);

  if( rb/sinB*cosB + rc/sinC*cosC + sqrt( 4.0*rb*rc ) < abs(C-B) ){
    return true;
  }else{
    return false;
  }
}

int main(){
  while(1){
    cin>>ax>>ay>>bx>>by>>cx>>cy;
    if(ax==0&&ay==0&&bx==0&&by==0&&cx==0&&cy==0)break;
    A=P(ax,ay),B=P(bx,by),C=P(cx,cy);
    P AB=init(B-A),AC=init(C-A);
    AB=(AB+AC)*0.5;
    sinA = abs(cross(AB,AC))/abs(AB);
    cosA = dot(AB,AC)/abs(AB);
    
    P BA=init(A-B),BC=init(C-B);
    BA=(BA+BC)*0.5;
    sinB = abs(cross(BA,BC))/abs(BA);
    cosB = dot(BA,BC)/abs(BA);

    P CA=init(A-C),CB=init(B-C);
    CA=(CA+CB)*0.5;
    sinC = abs(cross(CA,CB))/abs(CA);
    cosC = dot(CA,CB)/abs(CA);

    double L=0,R=10000,M;
    for(int i=0;i<50;i++){
      M=(L+R)/2.0;
      if(check(M))R=M;
      else L=M;
    }

    printf("%.10f %.10f %.10f\n",L,funcB(L),funcC(L));
  }
  return 0;
}