#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
}