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 Rust (1.15.1) (judge verdict: Runtime Error)

use std::io;
fn main() {
    let mut l1 = String::new();
    let mut l2 = String::new();

    io::stdin().read_line(&mut l1).unwrap();
    io::stdin().read_line(&mut l2).unwrap();

    let p_str: Vec<&str> = l2.trim().split(" ").collect();
    let mut p: Vec<i32> = [].to_vec();
    let n: i32 = l1.trim().parse().unwrap();

    for num in p_str.iter() {
        let num = num.parse::<i32>().unwrap();
        p.push(num);
    }

    let mut p_asc = p.clone();
    p_asc.sort();

    if p_asc == p {
        println!("YES");
        return;
    }

    for (i, _) in p.iter().enumerate() {
        let mut pc = p.clone();
        pc.swap((n - 1) as usize, i);

        if pc == p_asc {
            println!("YES");
            return;
        }
    }

    println!("NO");
}