Problem:
Score : 100 points

Problem Statement

AtCoDeer has three cards, one red, one green and one blue.

An integer between 1 and 9 (inclusive) is written on each card: r on the red card, g on the green card and b on the blue card.

We will arrange the cards in the order red, green and blue from left to right, and read them as a three-digit integer.

Is this integer a multiple of 4?

Constraints

1 ≤ r, g, b ≤ 9

Input

Input is given from Standard Input in the following format:

r g b

Output

If the three-digit integer is a multiple of 4, print YES (case-sensitive); otherwise, print NO.

Sample Input 1

4 3 2

Sample Output 1

YES

432 is a multiple of 4, and thus YES should be printed.

Sample Input 2

2 3 4

Sample Output 2

NO

234 is not a multiple of 4, and thus NO should be printed.

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


#![allow(unused)]

use std::cmp;
use std::io::{self, BufRead};
use std::iter;

macro_rules! destruct_ {
  ($e: expr, ()) => (
    assert!($e.next().is_none())
  );
  ($e: expr, ($arg: ident, $( $args: ident, )*)) => (
    $arg = $e.next().unwrap();
    destruct_!($e, ($($args,)*))
  );
  ($e: expr, ($arg: ident $(, $args: ident )*)) => (
    $arg = $e.next().unwrap();
    destruct_!($e, ($($args,)*))
  );
}

macro_rules! into {
  ($e: expr, $($name: ident)*) => {
    let mut iter = $e.into_iter();
    destruct_!(iter, ($($name)*));
  }
}

macro_rules! get {
  ($i: ident) => (
    let stdin = io::stdin();
    let mut $i = Vec::new();
    for line in stdin.lock().lines() {
      $i.push(
        line
          .unwrap()
          .split_whitespace()
          .map(|a| a.parse().unwrap())
          .collect()
      );
    }
  )
}

macro_rules! p {
  ($a: expr) => (
    println!("{:?}", $a);
  )
}

fn main() {
  let stdin = io::stdin();
  let mut lines = stdin.lock().lines();
  lines.next().unwrap().unwrap();
  let mut s: String = lines.next().unwrap().unwrap().parse().unwrap();
  let mut open = 0;
  let mut close = 0;
  for c in s.chars() {
    match c {
      '(' => open += 1,
      ')' => close += 1,
      _ => (),
    }
  }

  if open == close {
    for i in 1 .. open {
      s.push(')');
      s.insert(0, '(');
    }
  } else if cmp::max(open, close) == open {
    for i in 1 .. (open - close) {
      s.push(')');
    }
  } else {
    for i in 0 .. (close - open) {
      s.insert(0, '(');
    }
  }

  println!("{}", s);
}