#include<iostream>
#include<cstdlib>
#include<complex>
#define EPS 1e-10
using namespace std;

typedef complex<double> Po;


Po p[3],o;

double dot(Po x, Po y){return x.real()*y.real()+x.imag()*y.imag();}

double cross(Po x, Po y){return x.real()*y.imag() - x.imag()*y.real();}

double area(Po a, Po b, Po c){return abs(cross(b-a,c-a))/2;}

bool inter(Po a, Po b, Po c, Po x){
  return (fabs(area(a,b,x)+area(b,c,x)+area(c,a,x)-area(a,b,c)) < EPS);
}

double seg_dis(Po a, Po b, Po c){
  if(dot(b-a,c-a)<EPS)return abs(c-a);
  if(dot(a-b,c-b)<EPS)return abs(c-b);
  return abs(cross(b-a,c-a))/abs(b-a);
}

int main(){
  double x[4],y[4],r;

  for(;;){
    cin >> x[0] >> y[0];
    if(!x[0] && !y[0])break;

    for(int i=1;i<4;i++)cin >> x[i] >> y[i];
    cin >> r;

    for(int i=0;i<3;i++)p[i] = Po(x[i],y[i]);
    o = Po(x[3],y[3]);


    bool f[3];
    for(int i=0;i<3;i++)f[i] = !(abs(o-p[i])>r);
    if(f[0] && f[1] && f[2])cout << "b\n";
    else{
      if(inter(p[0],p[1],p[2],o)){
	for(int i=0;i<3;i++)f[i] = !(seg_dis(p[i],p[(i+1)%3],o)<r);
	if(f[0] && f[1] && f[2])cout << "a\n";
	else cout << "c\n";
      }else{
	for(int i=0;i<3;i++)f[i] = !(seg_dis(p[i],p[(i+1)%3],o)>r);
	if(f[0] || f[1] || f[2])cout << "c\n";
	else cout << "d\n";
      }
    }
  }
}