func_code_string: #include <bits/stdc++.h>   using namespace std;   long long n, k;   long long get(long long x, long long y) {     if (x <= y * 2) return 0;     long long s1 = 1, s2 = 0, p1 = x, p2 = x - 1, ans = 0;     while (p2 >= y * 2) {       if (p2 == y * 2) return s1 + ans;       ans += s1 + s2;       if (p1 & 1)         s1 = s1 * 2 + s2;       else         s2 = s2 * 2 + s1;       p1 /= 2;       p2 = p1 - 1;     }     return ans;   }   long long solve(long long l, long long r, long long x, long long k) {     long long mid = (l + r) / 2;     if (k == 1) return mid;     long long X = get(mid - l, x), Y = get(r - mid, x + 1);     if (k > X + Y + 1) return solve(mid + 1, r, x, k - X - 1);     return solve(l, mid - 1, x, k - Y - 1);   }   signed main() {     scanf( %lld%lld , &n, &k);     if (k == 1) {       puts( 1 );       return 0;     }     if (k == 2) {       printf( %lld n , n);       return 0;     }     n -= 2;     k -= 2;     long long l = 0, r = n;     while (l < r) {       long long mid = (l + r + 1) / 2;       if (get(n, mid) < k)         r = mid - 1;       else         l = mid;     }     printf( %lld n , 1 + solve(1, n, l, k));   }   