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 Go (1.6) (judge verdict: Accepted)

package main

import (
	"fmt"
	"strconv"
)

const (
	YYMM = iota
	MMYY
	AMBIGUOUS
	NA
)

type Format int

func (f Format) String() string {
	switch f {
	case YYMM:
		return "YYMM"
	case MMYY:
		return "MMYY"
	case AMBIGUOUS:
		return "AMBIGUOUS"
	default:
		return "NA"
	}
}

func isYear(num int) bool {
	return 0 <= num && num <= 99
}

func isMonth(num int) bool {
	return 1 <= num && num <= 12
}

func isYYMM(p, s int) bool {
	return isYear(p) && isMonth(s)
}

func isMMYY(p, s int) bool {
	return isMonth(p) && isYear(s)
}

func judge(p, s int) Format {
	if isYYMM(p, s) && isMMYY(p, s) {
		return AMBIGUOUS
	}
	if isYYMM(p, s) {
		return YYMM
	}
	if isMMYY(p, s) {
		return MMYY
	}
	return NA
}

func main() {
	var S string
	fmt.Scan(&S)
	preNum, _ := strconv.Atoi(S[:2])
	sufNum, _ := strconv.Atoi(S[2:])
	fmt.Println(judge(preNum, sufNum))
}