#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include "transmission.h"
#define pb push_back
#define mp make_pair
#define ll long long
using namespace std;
const int T = 10;

static vector<bool> data;
vector<bool> MES;

int N;
vector <bool> get_grp(int grp, int offset)
{
    vector <bool> res;
    for(int j = (grp - 1) * N; j < grp * N; j++)
        res.pb(MES[j - offset]);
    return res;
}

bool assume(int grp)
{
    vector <bool> cur;
    if(grp == 1)
        cur = get_grp(2, 1);
    else
        cur = get_grp(1, 0);

    for(int i = 1; i <= T; i++)
    {
        if(i == grp)
            continue;
        int offset = 0;
        if(i > grp)
            offset = 1;

        vector <bool> temp = get_grp(i, offset);
        if(temp != cur)
            return false;
    }
    return true;
}

vector<bool> receive(const vector<bool>& message, int n, int d)
{
    int m = message.size();
    N = n;
    MES = message;

    int broken = 0;
    for(int i = 1; i <= T; i++)
    {
        if(assume(i))
        {
            broken = i;
            break;
        }
    }

    if(broken == 1)
        data = get_grp(2, 1);
    else
        data = get_grp(1, 0);

    return data;
}


