#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <cmath>
#include <limits>
using namespace std;
template <typename T>
T average(T _l, T _r)
{
T int_part_l = _l / 2;
T int_part_r = _r / 2;
T fract_part_l = (_l % 2);
T fract_part_r = (_r % 2);
T result = int_part_l + int_part_r;
T fract_part_sum = fract_part_l + fract_part_r;
if (!result || ((fract_part_sum % 2) == 0))
return result;
if (result > 0)
result = result - ((fract_part_sum > 0) ? 0 : 1);
else
result = result + ((fract_part_sum > 0) ? 1 : 0);
return result;
}
int main() {
cout << average(-1,0) << endl;
cout << average(1,0) << endl;
cout << average(-1,1) << endl;
cout << average(-1,2) << endl;
cout << average(-1,3) << endl;
cout << average(-3,1) << endl;
cout << average(-4,-1) << endl;
cout << average(-4,-2) << endl;
cout << average(4,1) << endl;
cout << average(4,2) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxsaW1pdHM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KVCBhdmVyYWdlKFQgX2wsIFQgX3IpCnsKICAgIFQgaW50X3BhcnRfbCA9IF9sIC8gMjsKICAgIFQgaW50X3BhcnRfciA9IF9yIC8gMjsKICAgIFQgZnJhY3RfcGFydF9sID0gKF9sICUgMik7CiAgICBUIGZyYWN0X3BhcnRfciA9IChfciAlIDIpOwogICAgVCByZXN1bHQgPSBpbnRfcGFydF9sICsgaW50X3BhcnRfcjsKICAgIAogICAgVCBmcmFjdF9wYXJ0X3N1bSA9IGZyYWN0X3BhcnRfbCArIGZyYWN0X3BhcnRfcjsKICAgIGlmICghcmVzdWx0IHx8ICgoZnJhY3RfcGFydF9zdW0gJSAyKSA9PSAwKSkKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgaWYgKHJlc3VsdCA+IDApCiAgICAgICAgcmVzdWx0ID0gcmVzdWx0IC0gKChmcmFjdF9wYXJ0X3N1bSA+IDApID8gMCA6IDEpOwogICAgZWxzZQogICAgICAgIHJlc3VsdCA9IHJlc3VsdCArICgoZnJhY3RfcGFydF9zdW0gPiAwKSA/IDEgOiAwKTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkgewogICAgY291dCA8PCBhdmVyYWdlKC0xLDApIDw8IGVuZGw7CiAgICBjb3V0IDw8IGF2ZXJhZ2UoMSwwKSA8PCBlbmRsOwogICAgY291dCA8PCBhdmVyYWdlKC0xLDEpIDw8IGVuZGw7CiAgICBjb3V0IDw8IGF2ZXJhZ2UoLTEsMikgPDwgZW5kbDsKICAgIGNvdXQgPDwgYXZlcmFnZSgtMSwzKSA8PCBlbmRsOwogICAgY291dCA8PCBhdmVyYWdlKC0zLDEpIDw8IGVuZGw7CiAgICBjb3V0IDw8IGF2ZXJhZ2UoLTQsLTEpIDw8IGVuZGw7CiAgICBjb3V0IDw8IGF2ZXJhZ2UoLTQsLTIpIDw8IGVuZGw7CiAgICBjb3V0IDw8IGF2ZXJhZ2UoNCwxKSA8PCBlbmRsOwogICAgY291dCA8PCBhdmVyYWdlKDQsMikgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9