#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <bitset>
#include <queue>
#include <stack>
#include <utility>
#include <complex>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cctype>
using namespace std;
 
#define rep(i,n) for(int i=0; i<n; i++)
#define repa(i,s,e) for(int i=s; i<=e; i++)
#define repd(i,s,e) for(int i=s; i>=e; i--)

typedef pair<int,int> pii;
typedef vector<int> vi;
typedef long long ll;

typedef complex<double> P;

int x, y, r;
P tri[3];
pair<P,double> circle;

double cross(P& e1, P& e2) {
	return e1.real() * e2.imag() - e1.imag() * e2.real();
}

bool inc() {
	P e0 = tri[0] - circle.first;
	P e1 = tri[1] - circle.first;
	P e2 = tri[2] - circle.first;
	double d0 = cross(e0, e1);
	double d1 = cross(e1, e2);
	double d2 = cross(e2, e0);
	if(d0 * d1 >= 0 && d1 * d2 >= 0 && d2 * d0 >= 0) return true;
	return false;
}

double dist(P p1, P p2, P p) {
	double a = p2.imag() - p1.imag();
	double b = -(p2.real() - p1.real());
	double c = - a * p1.real() - b * p1.imag();
	double nm = a * p.real() + b * p.imag() + c;
	double de = a * a + b * b;
	return abs(nm) / sqrt(de);
}

double norm(P p) {
	return sqrt(p.real() * p.real() + p.imag() * p.imag());
}

void solve() {
	bool iscin = inc();
	double R = circle.second;
	vector<double> d(6, 0.0);
	d[0] = dist(tri[0], tri[1], circle.first);
	d[1] = dist(tri[1], tri[2], circle.first);
	d[2] = dist(tri[2], tri[0], circle.first);
	// printf("%f %f %f\n", d[0], d[1], d[2]);
	if(iscin && d[0] > R && d[1] > R && d[2] > R) {
		cout << "a" << endl;
		return;
	}

	P p0 = tri[0] - circle.first;
	P p1 = tri[1] - circle.first;
	P p2 = tri[2] - circle.first;
	d[3] = norm(p0);
	d[4] = norm(p1);
	d[5] = norm(p2);
	// printf("%f %f %f\n", d[3], d[4], d[5]);
	if(d[3] < R && d[4] < R && d[5] < R) {
		cout << "b" << endl;
		return;
	}

	sort(d.begin(), d.end());
	if(d[0] < R) {
		cout << "c" << endl;
		return;
	}

	cout << "d" << endl;
}

int main() {
	while( 1 ) {
		scanf("%d%d", &x, &y);
		if(x == 0 && y == 0) break;
		tri[0] = P(x, y);

		scanf("%d%d", &x, &y);
		tri[1] = P(x, y);
		
		scanf("%d%d", &x, &y);
		tri[2] = P(x, y);
		
		scanf("%d%d%d", &x, &y, &r);
		circle.first = P(x, y);
		circle.second = r;

		solve();
	}
}