#include <bitset>
#include <cmath>

using namespace std;

const int N = 10000;//sqrt(1000); // 32 ~= 1024^{1/2}

bitset<N> g[N]; // 12.5 M = (100 / 8)

int main() {
	int a = 10, b = 12;
	//const int x = a; // compilation error
	a | b;
	a & b;
	~a;
	a ^ b;
	__builtin_popcount(a); // g++

	// 1000 -- обязательно константа, int n; bitset<n> нельзя
	bitset<N> A, B; // обязательно одного размера
	// A, B -- множества из {0,1,...999}
	A ^ B;
	A ^= B;
	A | B; // объединение
	A & B; // пересечение
	B &= ~A; // разность
	A[i]; // i-й элемент bitset
	(a >> i) & 1; // i-й бит
	A.count(); // количество единичных бит, размер множества
	
	int l = 0, shift = 0; // O(N / word_size)
	unsigned int *hacked_A = (unsigned int *)&A;
	while (hacked_A[l] == 0)
		l++;
	while (((hacked_A[l] >> shift) & 1) == 0)
		shift++;
	cout << l * 32 + shift << endl;
	
	// N / word_size = N / 64 (ejudge, 32)
	// "cout << sizeof(int *)" == 4 или 8
}