Problem:
Score : 200 points

Problem Statement

You have a digit sequence S of length 4. You are wondering which of the following formats S is in:

YYMM format: the last two digits of the year and the two-digit representation of the month (example: 01 for January), concatenated in this order

MMYY format: the two-digit representation of the month and the last two digits of the year, concatenated in this order

If S is valid in only YYMM format, print YYMM; if S is valid in only MMYY format, print MMYY; if S is valid in both formats, print AMBIGUOUS; if S is valid in neither format, print NA.

Constraints

S is a digit sequence of length 4.

Input

Input is given from Standard Input in the following format:

S

Output

Print the specified string: YYMM, MMYY, AMBIGUOUS or NA.

Sample Input 1

1905

Sample Output 1

YYMM

May XX19 is a valid date, but 19 is not valid as a month. Thus, this string is only valid in YYMM format.

Sample Input 2

0112

Sample Output 2

AMBIGUOUS

Both December XX01 and January XX12 are valid dates. Thus, this string is valid in both formats.

Sample Input 3

1700

Sample Output 3

NA

Neither 0 nor 17 is valid as a month. Thus, this string is valid in neither format.

Solution in Rust (1.15.1) (judge verdict: Accepted)

use std::io;


fn main() {
    let s = read_one::<String>()
        .chars()
        .collect::<Vec<char>>();
    let mut is_yymm = false;
    let mut is_mmyy = false;
    if s[0] <= '1' && s[1] <= '2' || s[0] < '1' { is_mmyy = true; }
    if s[2] <= '1' && s[3] <= '2' || s[2] < '1' { is_yymm = true; }
    if s[0] == '0' && s[1] == '0' { is_mmyy = false; }
    if s[2] == '0' && s[3] == '0' { is_yymm = false; }
    match (is_yymm, is_mmyy) {
        (true, true) => println!("AMBIGUOUS"),
        (true, false) => println!("YYMM"),
        (false, true) => println!("MMYY"),
        _ => println!("NA"),
    }
}


#[allow(dead_code)]
fn read<T>() -> Vec<T>
where T:
std::str::FromStr,
T::Err: std::fmt::Debug {

    let mut buf = String::new();
    io::stdin().read_line(&mut buf).unwrap();
    buf.split_whitespace()
        .map(|s| s.trim().parse().unwrap())
        .collect()
}

#[allow(dead_code)]
fn read_one<T>() -> T
where T:
std::str::FromStr,
T::Err: std::fmt::Debug {

    let mut buf = String::new();
    io::stdin().read_line(&mut buf).unwrap();
    buf.trim().parse().unwrap()
}