#include <iostream>
#include <cmath>
#include <algorithm>
#include <complex>
#include <vector>
using namespace std;
typedef complex<double> P;
#define Y imag()
#define X real()
const double EPS = 1e-8;
 
struct L : public vector<P> {L(const P &a, const P &b) {push_back(a); push_back(b);} };
 
double get(P a[3]){
    double A = abs(a[0]-a[1]);
    double B = abs(a[1]-a[2]);
    double C = abs(a[2]-a[0]);
    double s = (A+B+C) / 2.0;
    double S = sqrt( s * (s-A) * (s-B) * (s-C) );
    return S;
}
double nijo(P a){
    return a.X * a.X + a.Y * a.Y;
}
  
double dot(const P& a, const P& b) {return real(conj(a)*b);}
P projection(const L &l, const P &p) {double t = dot(p-l[0], l[0]-l[1]) / norm(l[0]-l[1]);return l[0] + t*(l[0]-l[1]);}
 
double getPedal(const L &l, const P &p) {
    return abs(p - projection(l, p));
}
 
int main(){
    P a[3],c;double r;
    while(cin >> a[0].X >> a[0].Y && (a[0].X != 0 || a[0].Y != 0)){
        for(int i = 1 ; i < 3 ; i++) cin >> a[i].X >> a[i].Y;
        cin >> c.X >> c.Y >> r;
        double S = get(a);
        for(int i = 0 ; i < 3 ; i++){
            P b[3];
            b[0] = a[i];
            b[1] = a[(i+1)%3];
            b[2] = c;
            S -= fabs(get(b));
        }
        bool in = fabs(S) < EPS;
        bool hit = getPedal(L(a[0],a[1]),c) < r - EPS || getPedal(L(a[1],a[2]),c) < r - EPS || getPedal(L(a[0],a[2]),c) < r - EPS;
        //cout << getPedal(L(a[0],a[1]),c) << " " << r << endl;
        if(  nijo(a[0]-c) < r*r && nijo(a[1]-c) < r*r && nijo(a[2]-c) < r*r) cout << "b" << endl;
        else if(in && !hit) cout << "a" << endl;
        else if(hit) cout << "c" << endl;
        else cout << "d" << endl;
    }
}