// [мы тут] 7. Динамика :
// 	отрезки: задача про макс-подпоследовательность-подпалиндром
// 	бит-маски --> int32 (и базовые операции над множествами-масками)
// 	подмножества : гамильтонов путь (начать с рекурсии с запоминанием!) и коммивояжер

#include <vector>
#include <iostream>

using namespace std;

int main() {
	// A = {0, 1, .... , 31}
	// uint32_t A = 0, B = 0;
	uint64_t A = 0, B = 0;
	int x = 3;
	A += 1 << x; // 2^x
	A = (1 << 1) + (1 << 3) + (1 << 4); // {1, 3, 4};
	A | B; // OR, объединение
	A & B; // AND, пересечение
	//   00101010101 << 3  (2^3)
	//00101010101000
	// uint64_t

 	// 0..K-1
 	const int K = 1000, LEN = K / 64 + 1;
	uint64_t C[LEN];
	uint64_t D[LEN];
	for (int i = 0; i < LEN; i++)
		C[i] |= D[i]; // OR=
}