#include <bits/stdc++.h>

using namespace std;

vector<bool> safe;
int S;
set<pair<int, int>> vis;
void dfs(int cur, int speed) {
    if (vis.count(pair<int, int>(cur, speed)) != 0)
        return;
    if (cur > safe.size())
        return;
    vis.insert(pair<int, int>(cur, speed));
    vector<int> newSpeeds = {max(speed - 1, 1), speed, speed + 1};
    for (auto s : newSpeeds) {
        if (cur + s < safe.size() && safe[cur + s])
            dfs(cur + s, s);
    }
    return;
}

int main() {
    safe = {true, false, true, true, true, false, true, true, false, true, true};
    S = 4;
    dfs(0, S);
    vector<bool> reachable(safe.size());
    for (auto i : vis) {
        reachable[i.first] = true;
    }
    for (auto i : reachable) {
        cout << i << ' ';
    }
    cout << endl;
}