#include <bits/stdc++.h>
using namespace std;
int main() {
uint64_t n, a, b; cin >> n >> a >> b;
multiset<uint64_t> s;
for (uint64_t m=1<<n;m;m /= 2) { if (a&m) s.insert(m); if (b&m) s.insert(m); }
int ans = 0;
while (*s.begin() != (1 << n)) {
auto first = s.begin(), second = next(first);
if (second != s.end() && *first == *second) {
uint64_t nxt = *first + *second;
s.erase(first); s.erase(second);
s.insert(nxt);
} else {
uint64_t nxt = *first * 2;
s.erase(first);
s.insert(nxt);
}
++ans;
}
if (s.size() == 1) {
cout << ans << endl;
} else {
cout << "impossible" << endl;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCkgewoJdWludDY0X3QgbiwgYSwgYjsgY2luID4+IG4gPj4gYSA+PiBiOwoJbXVsdGlzZXQ8dWludDY0X3Q+IHM7Cglmb3IgKHVpbnQ2NF90IG09MTw8bjttO20gLz0gMikgeyBpZiAoYSZtKSBzLmluc2VydChtKTsgaWYgKGImbSkgcy5pbnNlcnQobSk7IH0KCWludCBhbnMgPSAwOwoJd2hpbGUgKCpzLmJlZ2luKCkgIT0gKDEgPDwgbikpIHsKCQlhdXRvIGZpcnN0ID0gcy5iZWdpbigpLCBzZWNvbmQgPSBuZXh0KGZpcnN0KTsKCQlpZiAoc2Vjb25kICE9IHMuZW5kKCkgJiYgKmZpcnN0ID09ICpzZWNvbmQpIHsKCQkJdWludDY0X3Qgbnh0ID0gKmZpcnN0ICsgKnNlY29uZDsKCQkJcy5lcmFzZShmaXJzdCk7IHMuZXJhc2Uoc2Vjb25kKTsKCQkJcy5pbnNlcnQobnh0KTsKCQl9IGVsc2UgewoJCQl1aW50NjRfdCBueHQgPSAqZmlyc3QgKiAyOwoJCQlzLmVyYXNlKGZpcnN0KTsKCQkJcy5pbnNlcnQobnh0KTsKCQl9CgkJKythbnM7Cgl9CglpZiAocy5zaXplKCkgPT0gMSkgewoJCWNvdXQgPDwgYW5zIDw8IGVuZGw7Cgl9IGVsc2UgewoJCWNvdXQgPDwgImltcG9zc2libGUiIDw8IGVuZGw7Cgl9Cn0K