#include <iostream>
#include <complex>
#include <algorithm>

using namespace std;

typedef complex<double> Point;

const double EPS = 1e-10;

Point a, b, c, o;
double r;

bool equals(double a, double b){
  return abs(a-b) < EPS;
}

double dot(Point a, Point b){
  return a.real()*b.real() + a.imag()*b.imag();
}

double cross(Point a, Point b){
  return a.real()*b.imag() - a.imag()*b.real();
}

static const int COUNTER_CLOCKWISE = 1;
static const int CLOCKWISE = -1;
static const int ONLINE_BACK = 2;
static const int ONLINE_FRONT = -2;
static const int ON_SEGMENT = 0;

int ccw(Point p0, Point p1, Point p2){
  Point a = p1 - p0;
  Point b = p2 - p0;
  if(cross(a, b) > EPS) return COUNTER_CLOCKWISE;
  if(cross(a, b) < -EPS) return CLOCKWISE;
  if(dot(a, b) < -EPS) return ONLINE_BACK;
  if(norm(a) < norm(b)) return ONLINE_FRONT;
  return ON_SEGMENT;
}

double getDistance(Point a, Point b){
  return abs(a - b);
}

double getDistanceLP(Point a, Point b, Point p){
  return abs(cross(b - a, p - a) / abs(b - a));
}

double getDistanceSP(Point a, Point b, Point p){
  if(dot(b - a, p - a) < 0.0) return abs(p - a);
  if(dot(a - b, p - b) < 0.0) return abs(p - b);  
  return getDistanceLP(a, b, p);
}

bool TinC(){
  if(ccw(a, b, o) != 1) return false;
  if(ccw(b, c, o) != 1) return false;
  if(ccw(c, a, o) != 1) return false;
  if(getDistanceSP(a, b, o) < r) return false;
  if(getDistanceSP(b, c, o) < r) return false;
  if(getDistanceSP(c, a, o) < r) return false;
  return true;
}

bool CinT(){
  if(getDistance(a, o) > r) return false;
  if(getDistance(b, o) > r) return false;
  if(getDistance(c, o) > r) return false;
  return true;
}

bool CrossT(){
  if(getDistanceSP(a, b, o) < r + EPS) return true;
  if(getDistanceSP(b, c, o) < r + EPS) return true;
  if(getDistanceSP(c, a, o) < r + EPS) return true;
  return false;
}

char solve(){
  if(ccw(a, b, c) == -1){
    swap(a, b);
  }
  if(TinC()) return 'a';
  if(CinT()) return 'b';
  if(CrossT()) return 'c';
  else return 'd';
}

main(){
  while(cin >> a.real() >> a.imag() && (a.real() || a.imag())){
    cin >> b.real() >> b.imag();
    cin >> c.real() >> c.imag();
    cin >> o.real() >> o.imag();
    cin >> r;
    cout << solve() << endl;
  }
  return 0;
}