Problem:
Score : 100 points

Problem Statement

You are given a positive integer N.
Find the minimum positive integer divisible by both 2 and N.

Constraints

1 \leq N \leq 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N

Output

Print the minimum positive integer divisible by both 2 and N.

Sample Input 1

3

Sample Output 1

6

6 is divisible by both 2 and 3.
Also, there is no positive integer less than 6 that is divisible by both 2 and 3.
Thus, the answer is 6.

Sample Input 2

10

Sample Output 2

10

Sample Input 3

999999999

Sample Output 3

1999999998

Solution in Rust (1.15.1) (judge verdict: Runtime Error)

use std::io::*;
use std::str::*;

fn read_from_stdin<T: FromStr>() -> T {
    let temp = stdin();
    let mut temp = temp.lock();
    read(&mut temp).unwrap()
}

fn read<T: FromStr>(s: &mut StdinLock) -> Option<T> {
    let s = s.by_ref()
        .bytes()
        .map(|c| c.unwrap() as char)
        .skip_while(|c| c.is_whitespace())
        .take_while(|c| !c.is_whitespace())
        .collect::<String>();
    s.parse::<T>().ok()
}

fn main() {
    let n: usize = read_from_stdin();
    let mut array = Vec::new();
    for i in 1..n + 1 {
        let a: i64 = read_from_stdin();
        array.push(a - i as i64);
    }
    array.sort();

    if n % 2 != 0 {
        let b = array[n / 2];
        let res: i64 = array.iter().map(|x| (x - b).abs()).sum::<i64>();
        println!("{}", res);
    } else {
        let (b_pre, b_suc) = (array[n / 2 - 1], array[n / 2]);
        let res_pre: i64 = array.iter().map(|x| (x - b_pre).abs()).sum::<i64>();
        let res_suc: i64 = array.iter().map(|x| (x - b_suc).abs()).sum::<i64>();
        println!("{}", std::cmp::min(res_pre, res_suc));
    }
}