#include <cstdint>
#include <vector>
#include <bitset>

using namespace std;

// Транзитивное замыкание : c --> d
// a-->b && b-->c  =>  a-->c

// Матрица смежности (есть ли ребро)
// c[i,j] = true/false

// Матрица достижимости (достижима ли)
// d[i,j] = true/false

#define forn(i, n) for (int i = 0; i < (int)(n); i++)

// #pragma GCC target("avx2")

const int n = 100;

// int d[n][n]; // d=c
bitset<n> d[n];

int main() {
	// n^3 --> n^3 / 64
	// i ---> j>i
	// nm --> nm / 64
	for (int i = n - 1; i >= 0; i--) {
		d[i][i] = 1;
		for (int x : graph[i]) // m : i --> x
			d[i] |= d[x]; // n/64
	}

	forn(k, n)
		forn(i, n)
			if (d[i][k])
				d[i] |= d[k];
				// forn(j, n)
				// 	d[i][j] |= d[k][j];

				// forn(j, n)
				// 	if (d[k][j]) // d[i][k] &&
				// 		d[i][j] = 1;
}