Problem:
What day is today?

Your task is to write a program which reads a date (from 2004/1/1 to 2004/12/31) and prints the day of the date. Jan. 1, 2004, is Thursday. Note that 2004 is a leap year and we have Feb. 29.

Input

The input is a sequence of datasets. The end of the input is indicated by a line containing one zero. Each dataset consists of two integers m and d separated by a single space in a line. These integers respectively represent the month and the day.

The number of datasets is less than or equal to 50.

Output

For each dataset, print the day (please see the following words) in a line.

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Sample Input

1 1
2 29
0 0

Output for the Sample Input

Thursday
Sunday

Solution in C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;
					
public class my
{
	public static void Main()
	{
		string s;
		
		while( "0 0" != ( s = Console.ReadLine()) ) {
			var n = my.GetIntArray(2, s);
			
			if(n[0] == 0 && n[1] == 0)	break;
			
			switch( (my.GetDays(n[0]) + n[1]) % 7 ) {
				case 0:	Console.WriteLine("Wednesday");	break;
				case 1:	Console.WriteLine("Thursday");	break;
				case 2:	Console.WriteLine("Friday");	break;
				case 3:	Console.WriteLine("Saturday");	break;
				case 4:	Console.WriteLine("Sunday");	break;
				case 5:	Console.WriteLine("Monday");	break;
				case 6:	Console.WriteLine("Tuesday");	break;
			}
		}

	}
	
	private static int GetDays(int month)
	{
		return new int[] {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335}[month - 1];
	}
	
	private static int GetInt()
	{
		return int.Parse(Console.ReadLine());
	}
	
	private static int[] GetIntArray()
	{
		return Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
	}

	private static int[] GetIntArray(int n)
	{
		var A = new int[n];
		var s = Console.ReadLine().Split(' ');

		for(int i = 0; i < n; i++) {
			A[i] = int.Parse(s[i]);
		}
		return A;
	}
	
	private static int[] GetIntArray(int n, string t)
	{
		var A = new int[n];
		var s = t.Split(' ');

		for(int i = 0; i < n; i++) {
			A[i] = int.Parse(s[i]);
		}
		return A;
	}

	private static int[] GetIntArray(char c)
	{
		return Array.ConvertAll(Console.ReadLine().Split(c), int.Parse);
	}
	
	private static int[] GetIntArray(char c, string s)
	{
		return Array.ConvertAll(s.Split(c), int.Parse);
	}
	
	private static int[] GetIntArray(string s)
	{
		return Array.ConvertAll(s.Split(' '), int.Parse);
	}
	
	private static double[] GetDoubleArray()
	{
		return Array.ConvertAll(Console.ReadLine().Split(' '), double.Parse);
	}
	
	public static string Reverse(string s)
	{
		var c = s.ToCharArray();
		Array.Reverse(c);
		
		return new String(c);
	}
	
	private static void WriteArray(int[] a)
	{
		Console.WriteLine(string.Join(" ", Array.ConvertAll( a, x=>x.ToString() ) ) );
	}

	private static void WriteArray(long[] a)
	{
		Console.WriteLine(string.Join(" ", Array.ConvertAll( a, x=>x.ToString() ) ) );
	}
	
	private static void WriteVector(Vector v)
	{
		Console.WriteLine(string.Format("{0:f8} {1:f8}", v.X, v.Y));
	}
}

public struct Vector
{
	public double X,Y;
}