#include <iostream>

using namespace std;

int data[3][3];

//縦の探索
int func0(int x){
	int tmp = data[0][x];
	int flag = 1;
	for(int i=1;i<3;i++){
		if(tmp != data[i][x]){
			flag = 0;
			break;
		}
	}
	if(flag == 0){
		return 0;
	}
	else{
		return tmp;
	}
}

//横の探索
int func1(int y){
	int tmp = data[y][0];
	int flag = 1;
	for(int i=1;i<3;i++){
		if(tmp != data[y][i]){
			flag = 0;
			break;
		}
	}
	if(flag == 0){
		return 0;
	}
	else{
		return tmp;
	}
}
int func2(){
	int tmp = data[0][0];
	int flag = 1;
	for(int i=1;i<3;i++){
		if(tmp != data[i][i]){
			flag = 0;
			break;
		}
	}
	if(flag == 0){
		return 0;
	}
	else{
		return tmp;
	}
}	

int func3(){
	int tmp = data[0][2];
	int flag = 1;
	for(int i=1;i<3;i++){
		if(tmp != data[i][2-i]){
			flag = 0;
			break;
		}
	}
	if(flag == 0){
		return 0;
	}
	else{
		return tmp;
	}
}


int main(){
	string str;
	while(cin>>str){
		for(int i=0;i<3;i++){
			for(int j=0;j<3;j++){
				if(str[i*3+j] == 'o')     data[i][j] = 1;
				else if(str[i*3+j] == 'x')data[i][j] = -1;
				else                      data[i][j] = 0;
			}
		}

		int flag = 0;
		int state = 0;
		//ここから探索。
		for(int x=0;x<3;x++){
			if(func0(x)!=0){
				flag = 1;
				state = func0(x);
				break;
			}
		}
		for(int y=0;y<3;y++){
			if(func1(y)!=0){
				flag = 1;
				state = func1(y);
				break;
			}
		}
		//ここから斜めの探索。
		if(func2()!=0){
			flag = 1;
			state = func2();
		}
		if(func3()!=0){
			state = func3();
		}
		if(state == 1){
			cout<<"o"<<endl;
		}
		else if(state == -1){
			cout<<"x"<<endl;
		}
		else{
			cout<<"d"<<endl;
		}
	}
	return 0;
}