J. Рефакторинг
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вам дан исходный код некоторой программы, для удобства он приведён на нескольких популярных языках программирования. Данная программа читает два целых числа $$$a$$$ и $$$n$$$ и затем выводит одно целое число — ответ.

При больших входных данных эта программа может работать довольно долго. Ваша задача — написать альтернативную программу, которая будет выдавать точно такие же ответы, но работать не более одной секунды при любых входных $$$a$$$ и $$$n$$$ в диапазоне от $$$0$$$ до $$$10^{18}$$$.

Текст на C++:

#include <iostream>

int main() {
long long a, n;
std::cin >> a >> n;
long long b = 0;
for (long long i = 0; i < n; i++) {
b = (b - a) & a;
}
std::cout << b << std::endl;
}
Текст на Python:
a = int(input())
n = int(input())
b = 0
for _ in range(n):
b = (b - a) & a
print(b)

Текст на Java:

import java.util.Scanner;

public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
long a = in.nextLong();
long n = in.nextLong();
long b = 0;
for (long i = 0; i < n; i++) {
b = (b - a) & a;
}
System.out.println(b);
}
}

Текст на C#:

using System;

public class Solution {
static void Main() {
long a = long.Parse(Console.ReadLine());
long n = long.Parse(Console.ReadLine());
long b = 0;
for (long i = 0; i < n; i++) {
b = (b - a) & a;
}
Console.WriteLine(b);
}
}

Текст на Pascal:

var
a, b, n, i: int64;
begin
read(a, n);
b := 0;
i := 0;
while i < n do begin
b := (b - a) and a;
inc(i);
end;
writeln(b);
end.
Входные данные

Первая строка входных данных содержит целое число $$$a$$$, вторая строка содержит целое число $$$n$$$ ($$$0 \le a, n \le 10^{18}$$$).

Выходные данные

Выведите одно целое число — ответ.

Примеры
Входные данные
3
2
Выходные данные
2
Входные данные
5
6
Выходные данные
4
Примечание

Предполагается, что отрицательные целые числа в памяти представляются в дополнительном коде как в большинстве популярных процессорных архитектур (включая архитектуру x86-64). В дополнительном коде отрицательное число $$$-x$$$ сохраняется в памяти как дополнение до двойки в степени числа разрядов, то есть $$$2^{64}-x$$$.

Заметим, что в языке Питон целые числа не ограничены фиксированной разрядностью. Но это не влияет на ответ, поэтому вы можете считать, что утверждение выше верно и для Питона.