Problem:
時計の短い針と長い針

原始スローライフ主義組織「アカルイダ」から、いたずらの予告状が届きました。アカルイダといえば、要人の顔面にパイを投げつけたりするいたずらで有名ですが、最近では火薬を用いてレセプション会場にネズミ花火をまき散らすなど、より過激化してきました。予告状は次の文面です。

---パソコン ヒトの時間を奪う。良くない。
時計の短い針と長い針 出会うころ、アカルイダ 正義行う。
スローライフ 偉大なり。

たどたどしくてよく解らないのですが、時計の短針と長針とが重なったころにいたずらを決行するという意味のようです。

このいたずらを警戒するため、時刻を入力として、短針と長針が近い場合は "alert"、遠い場合は "safe"、それ以外の場合は "warning" と出力するプログラムを作成してください。ただし、「近い」とは短針と長針の角度が 0° 以上 30° 未満の場合をいい、「遠い」とは 90° 以上 180° 以下の場合をいいます。なお、時刻は 00:00 以上 11:59 以下とします。

Input

入力は以下の形式で与えられます。

n
hh1:mm1
hh2:mm2
:
hhn:mmn

1 行目に判定する時刻の個数 n（1 ≤ n ≤ 10000）、2 行目以降に i 番目の時刻 hhi:mmi がそれぞれ１行に与えられます。

Output

i 番目の時刻の判定結果 safe、warning、または alert を順番にそれぞれ１行に出力してください。

Sample Input

4
02:15
06:01
11:55
10:40

Output for the Sample Input

alert
safe
alert
warning

Solution in C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _0135
{
    public class Program

    {
        public static void Main(string[] args)
        {
            int n = RInt();
            for (int i = 0 ; i < n ; i++)
            {
                int[] HHMM = RIntAr(':');
                decimal shortAngle = HHMM[1] * (360 / 60M);
                decimal longAngle = HHMM[0] * (360 / 12M) + HHMM[1] * (30 / 60M);
                decimal diff = Math.Abs(shortAngle - longAngle);
                diff = Math.Min(diff, 360 - diff);

                string res;
                if (diff < 30) res = "alert";
                else if (diff >= 90) res = "safe";
                else res = "warning";
                Console.WriteLine(res);
            }

        }

        static string RSt() { return Console.ReadLine(); }
        static int RInt() { return int.Parse(Console.ReadLine().Trim()); }
        static long RLong() { return long.Parse(Console.ReadLine().Trim()); }
        static double RDouble() { return double.Parse(Console.ReadLine()); }
        static string[] RStAr(char sep = ' ') { return Console.ReadLine().Trim().Split(sep); }
        static int[] RIntAr(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Trim().Split(sep), e => int.Parse(e)); }
        static long[] RLongAr(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Trim().Split(sep), e => long.Parse(e)); }
        static double[] RDoubleAr(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Trim().Split(sep), e => double.Parse(e)); }
        static string WAr<T>(IEnumerable<T> array, string sep = " ") { return string.Join(sep, array.Select(x => x.ToString()).ToArray()); }
    }

}