#include <iostream>
#include <string>
#include <vector>
using namespace std;

const double eps = 1e-8;
double x[4], y[4], r;

double distSq(double x1, double y1, double x2, double y2) {
	return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
}

double perpDist(double x1, double y1, double x2, double y2, double cx, double cy) {
	double a, b, x, y;
	double res = min(distSq(x1, y1, cx, cy), distSq(x2, y2, cx, cy));
	if (x1 == x2) {
		if (min(y1, y2) <= cy && cy <= max(y1, y2)) {
			res = (cx - x1) * (cx - x1);
		}
	} else {
		a = (y2 - y1) / (x2 - x1);
		b = y1 - a * x1;
		x = (cx + a * (cy - b)) / (1 + a * a);
		y = a * x + b;
		if (min(x1, x2) <= x && x <= max(x1, x2) && min(y1, y2) <= y && y <= max(y1, y2)) {
			res = distSq(x, y, cx, cy);
		}
	}
	return res;
}

bool A() {
	int c = 0;
	for (int i=0; i<3; ++i) {
		if (0 <= (x[(i+1)%3] - x[i]) * (y[3] - y[i]) - (y[(i+1)%3] - y[i]) * (x[3] - x[i])) {
			++ c;
		}
	}
	if (c % 3 != 0) return false;
	for (int i=0; i<3; ++i) {
		if (perpDist(x[i], y[i], x[(i+1)%3], y[(i+1)%3], x[3], y[3]) + eps < r * r) {
			return false;
		}
	}
	return true;
}

bool B() {
	for (int i=0; i<3; ++i) {
		if (r * r < distSq(x[i], y[i], x[3], y[3])) {
			return false;
		}
	}
	return true;
}

bool C() {
	for (int i=0; i<3; ++i) {
		if (perpDist(x[i], y[i], x[(i+1)%3], y[(i+1)%3], x[3], y[3]) <= r * r + eps) {
			return true;
		}
	}
	return false;
}

int main() {
	while (cin >> x[0] >> y[0], (x[0] || y[0])) {
		for (int i=1; i<4; ++i) cin >> x[i] >> y[i];
		cin >> r;
		if (B()) {
			cout << "b" << endl;
		} else if (A()) {
			cout << "a" << endl;
		} else if (C()) {
			cout << "c" << endl;
		} else {
			cout << "d" << endl;
		}
	}
	return 0;
}