Problem:
Score: 100 points

Problem Statement

We have two distinct integers A and B.

Print the integer K such that |A - K| = |B - K|.

If such an integer does not exist, print IMPOSSIBLE instead.

Constraints

All values in input are integers.

0 \leq A,\ B \leq 10^9

A and B are distinct.

Input

Input is given from Standard Input in the following format:

A B

Output

Print the integer K satisfying the condition.

If such an integer does not exist, print IMPOSSIBLE instead.

Sample Input 1

2 16

Sample Output 1

9

|2 - 9| = 7 and |16 - 9| = 7, so 9 satisfies the condition.

Sample Input 2

0 3

Sample Output 2

IMPOSSIBLE

No integer satisfies the condition.

Sample Input 3

998244353 99824435

Sample Output 3

549034394

Solution in C# (Mono 4.6.2.0) (judge verdict: Runtime Error)

using System;

class Program
{
    static void Main(string[] args) {
        int n = int.Parse(Console.ReadLine());
        int[] aryA = ToIntArray(Console.ReadLine(), n+1);
        int[] aryB = ToIntArray(Console.ReadLine(), n);


        Console.WriteLine(process(n, aryA, aryB));
        //Console.ReadLine();
    }

    static int process(int n, int[] aryA, int[] aryB) {
        int count = 0;
        for(var i=0; i<n+1; i++) {
            //前勇者割り当て
            if (i > 0) { 
                var v = Math.Min(aryA[i], aryB[i - 1]);
                aryA[i] -= v;
                aryB[i - 1] -= v;
                count += v;
            }
            //後勇者割り当て
            if (i < n) {
                var v = Math.Min(aryA[i], aryB[i]);
                aryA[i] -= v;
                aryB[i] -= v;
                count += v;
            }
        }
        return count;
    }

    static int[] ToIntArray(string strs, int n) {
        int[] ret = new int[n];
        var spl = strs.Split(' ');
        for (int i = 0; i < n; i++) ret[i] = int.Parse(spl[i]);
        return ret;
    }
}