#include <algorithm>
#include <iostream>
#include <set>
#include <stdint.h>

int main() {
	const auto n_hashbits = 5;
	const auto i_max = 1ull << n_hashbits;
	uint64_t min_magic = -1;
	
	for (uint64_t i_b2 = 1; i_b2 < i_max; ++i_b2) {
		
	  for (uint64_t i_d2 = 1; i_d2 < i_max; ++i_d2) {
	  	if (i_d2 == i_b2) continue;
	  	
	    for (uint64_t i_e3 = 1; i_e3 < i_max; ++i_e3) {
	      if (i_e3 == i_d2 || i_e3 == i_b2) continue;
	      
	      for (uint64_t i_f4 = 1; i_f4 < i_max; ++i_f4) {
	      	if (i_f4 == i_e3 || i_f4 == i_d2 || i_f4 == i_b2) continue;
	      	
	        for (uint64_t i_g5 = 1; i_g5 < i_max; ++i_g5) {
	          if (i_g5 == i_f4 || i_g5 == i_e3 || i_g5 == i_d2 || i_g5 == i_b2) continue;

	          uint64_t magic = i_b2 << 50;
	          magic |= i_d2 << 48;
	          magic |= i_e3 << 39;
	          magic |= i_f4 << 30;
	          magic |= i_g5 << 21;
			  min_magic = std::min(min_magic, magic);
	        }
	      }
	    }
	  }
	}
	
	std::cout << "Min magic: " << std::hex << min_magic << std::endl;
}