#include <stdlib.h>
#include <iostream>

using namespace std;

static bool state = true;

struct Toggle {
	virtual ~Toggle() {}
	void off() { state = false; }
	virtual void activate() { state = !state; }
};

struct NthToggle: public Toggle {
	NthToggle(int max_counter): count_max(max_counter), counter(0) {}
	void activate() {
		if (++this->counter >= this->count_max) {
			Toggle::activate();
			counter = 0;
		}
	}
private:
    int count_max;
    int counter;
};


int main(int argc, char *argv[]) {
	unsigned n = ((argc == 2) ? atoi(argv[1]) : 1);
	Toggle* toggles[n];
	for (unsigned i=0; i<n; i++) {
		toggles[i] = (i % 4 ? new Toggle : new NthToggle(i / 4));
	}
	for (unsigned i = 0; i < n * 1000; i += 3) {
		Toggle* t = toggles[i % n];
		if (i % 2) t->off();
		t->activate();
		if ((i + 3) % 4 == 0) t->off();
		t->activate();
	}
	cout << (state ? "true" : "false") << endl;
	for (unsigned i = 0; i < n; ++i) delete toggles[i];
}

