#include  #include  void bit_toggle(int* n, int bit) {  *n ^= 1 << bit; } bool is_open(int* lock) {  for (int i = 0; i < 19; ++i)  if (lock[i] == 0b111)  return false;  return true; } void reset(int* lock) {  lock[ 0] = 0b010;  lock[ 1] = 0b010;  lock[ 2] = 0b010;  lock[ 3] = 0b010;  lock[ 4] = 0b010;  lock[ 5] = 0b010;  lock[ 6] = 0b010;  lock[ 7] = 0b111;  lock[ 8] = 0b011;  lock[ 9] = 0b011;  lock[10] = 0b011;  lock[11] = 0b001;  lock[12] = 0b001;  lock[13] = 0b000;  lock[14] = 0b000;  lock[15] = 0b110;  lock[16] = 0b110;  lock[17] = 0b110;  lock[18] = 0b100; } int main() {  int lock[19];  for (int n = 0; n < 1024; ++n)  {  reset(lock);  if(n & 1)  {  bit_toggle(&lock[3 ], 0);  bit_toggle(&lock[12], 1);  bit_toggle(&lock[14], 0);  bit_toggle(&lock[14], 1);  bit_toggle(&lock[16], 1);  }  if(n & 2)  {  bit_toggle(&lock[3 ], 2);  bit_toggle(&lock[7 ], 2);  bit_toggle(&lock[11], 1);  bit_toggle(&lock[11], 2);  bit_toggle(&lock[15], 1);  }  if(n & 4)  {  bit_toggle(&lock[6 ], 2);  bit_toggle(&lock[7 ], 0);  bit_toggle(&lock[7 ], 1);  bit_toggle(&lock[8 ], 1);  bit_toggle(&lock[10], 2);  bit_toggle(&lock[16], 1);  }  if(n & 8)  {  bit_toggle(&lock[5 ], 0);  bit_toggle(&lock[5 ], 2);  bit_toggle(&lock[11], 0);  bit_toggle(&lock[12], 0);  }  if(n & 16)  {  bit_toggle(&lock[0 ], 1);  bit_toggle(&lock[1 ], 2);  bit_toggle(&lock[2 ], 0);  bit_toggle(&lock[2 ], 2);  bit_toggle(&lock[4 ], 2);  bit_toggle(&lock[5 ], 1);  bit_toggle(&lock[17], 2);  bit_toggle(&lock[18], 1);  }  if(n & 32)  {  bit_toggle(&lock[4 ], 1);  bit_toggle(&lock[8 ], 0);  bit_toggle(&lock[9 ], 0);  bit_toggle(&lock[14], 2);  bit_toggle(&lock[15], 2);  bit_toggle(&lock[18], 0);  }  if(n & 64)  {  bit_toggle(&lock[1 ], 0);  bit_toggle(&lock[3 ], 1);  bit_toggle(&lock[8 ], 2);  bit_toggle(&lock[10], 1);  bit_toggle(&lock[13], 1);  bit_toggle(&lock[17], 0);  bit_toggle(&lock[18], 2);  }  if(n & 128)  {  bit_toggle(&lock[2 ], 1);  bit_toggle(&lock[6 ], 0);  bit_toggle(&lock[10], 0);  bit_toggle(&lock[16], 0);  }  if(n & 256)  {  bit_toggle(&lock[1 ], 1);  bit_toggle(&lock[4 ], 0);  bit_toggle(&lock[6 ], 1);  bit_toggle(&lock[9 ], 2);  bit_toggle(&lock[12], 2);  bit_toggle(&lock[13], 0);  bit_toggle(&lock[13], 2);  }  if(n & 512)  {  bit_toggle(&lock[0 ], 0);  bit_toggle(&lock[0 ], 2);  bit_toggle(&lock[9 ], 1);  bit_toggle(&lock[15], 0);  bit_toggle(&lock[16], 2);  }  if (is_open(lock))  {  printf("%d %010b\n", n, n);  }  } }