#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
vector<vector<pair<int,double>> > source(8);
int comp(pair<int,double> l, pair<int,double> r)
{
return l.second > r.second;
}
// функция принимает на вход вектор пар значений и вероятностей одной коробки и возвращает скорректированное значение
int foo(vector<pair<int,double>> data, int index)
{
sort(data.begin(), data.end(), comp); // сортировка по убыванию вероятностей
switch (index)
{
case 0: // случай для первой коробки
for(int i = 0; i < data.size(); ++i)
{
if(data[i].first == 0 || data[i].first == 1 || data[i].first == 2 || data[i].first == 3)
return data[i].first;
}
case 2 : // случай для третьей коробки
for(int i = 0; i < data.size(); ++i)
{
if(data[i].first == 0 || data[i].first == 1)
return data[i].first;
}
case 4: // для пятой коробки
for(int i = 0; i < data.size(); ++i)
{
if(data[i].first == 1 || data[i].first == 2)
return data[i].first;
}
case 5: // для седьмой
for(int i = 0; i < data.size(); ++i)
{
if(data[i].first == 0 || data[i].first == 9)
return data[i].first;
}
default: // для остальных четырех возврашаем значение с наибольшей вероятностью
return data[0].first;
}
}
// возврашает исправленную дату
string date_result()
{
string date = "";
for(int i = 0; i < source.size(); ++i)
{
date+= (foo(source[i], i) + '0'); // вызов функции foo для каждой коробки
if(i == 1 || i == 3)
date+= '.';
}
return date;
}
int main()
{
int length = 8, num = 10;
vector<pair<int,double>> temp(num);
double ver;
for(int i = 0; i < length; ++i)
{
for(int j = 0; j < num; ++j)
{
cin >> ver;
temp[j] = pair<int,double> (j, ver);
}
source[i] = temp;
}
cout << date_result() << endl;
}