#include <iostream>
#include <set>
#include <vector>
#include <deque>
#define se second
#define fi first
#define mp make_pair
#define pb push_back
using namespace std;
char step(vector<vector<char>> field, char turn, int left) {
bool f = false;
for (int i = 0; i < 3; i++) {
if ((field[0][i] == field[1][i]) && (field[1][i] == field[2][i]) && (field[1][i] != '#')) f = true;
if ((field[i][0] == field[i][1]) && (field[i][1] == field[i][2]) && (field[i][1] != '#')) f = true;
}
if ((field[0][0] == field[1][1]) && (field[1][1] == field[2][2]) && (field[0][0] != '#')) f = true;
if ((field[0][2] == field[1][1]) && (field[1][1] == field[2][0]) && (field[0][2] != '#')) f = true;
if (f) return 'l';
if (left == 0) return 'd';
bool w_flag = false;
bool d_flag = false;
bool l_flag = false;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (field[i][j] == '#') {
field[i][j] = turn;
char res;
if (turn == 'X') {
res = step(field, 'O', left - 1);
} else {
res = step(field, 'X', left - 1);
}
field[i][j] = '#';
if (res == 'w') w_flag = true;
else if (res == 'd') d_flag = true;
else l_flag = true;
}
}
}
if (l_flag) return 'w';
if (d_flag) return 'd';
return 'l';
}
int main() {
vector<vector<char>> field(3, vector<char>(3));
for (vector<char>& e : field) {
string s;
cin >> s;
e[0] = s[0];
e[1] = s[1];
e[2] = s[2];
}
char res = step(field, 'X', 3);
if (res == 'w') cout << "Crosses win";
else if (res == 'd') cout << "Draw";
else cout << "Ouths win";
return 0;
}