Problem:
うるう年

西暦 a 年から b 年までの間にあるすべてのうるう年を出力するプログラムを作成してください。

うるう年の条件は、次のとおりとします。ただし、0 < a ≤ b < 3,000 とします。与えられた期間にうるう年がない場合には "NA"と出力してください。

西暦年が 4 で割り切れる年であること。

ただし、100 で割り切れる年はうるう年としない。

しかし、400 で割り切れる年はうるう年である。

Input

複数のデータセットが与えられます。各データセットの形式は以下のとおりです：

a b

a, b がともに 0 のとき入力の終了とします。データセットの数は 50 を超えません。

Output

データセットごとに、西暦または NA を出力してください。

データセットの間に１つの空行を入れてください。

Sample Input

2001 2010
2005 2005
2001 2010
0 0

Output for the Sample Input

2004
2008

NA

2004
2008

Solution in C# (judge verdict: WA: Presentation Error)

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

namespace _093_LeapYear
{
	class Program
	{
		static void Main ( string[] args )
		{
			List<int> leapYearList = new List<int> (3000 / 4);

			for (int lp = 4; lp < 3000; lp += 4)
			{
				if (lp % 100 == 0)
				{
					if (lp % 400 == 0)
					{
						leapYearList.Add (lp);
					}
				}
				else
				{
					leapYearList.Add (lp);
				}
			}

			string inputStr;
			StringBuilder output = new StringBuilder (4 * 10 * 50);

			while ((inputStr = Console.ReadLine ()) != "0 0")
			{
				int[] split = Array.ConvertAll (inputStr.Split (' '), int.Parse);

				int flontIndex = leapYearList.BinarySearch (Ceiling (split[0]));
				int backIndex = leapYearList.BinarySearch (Floor (split[1]));

				if (flontIndex <= backIndex && 0 <= flontIndex && 0 <= backIndex)
				{
					IEnumerable<int> result = leapYearList.Skip (flontIndex).Take (backIndex - flontIndex + 1);

					foreach (var item in result)
					{
						output.Append (item);
						output.AppendLine ();
					}
				}
				else
				{
					output.AppendLine ("NA");
				}

				output.AppendLine ();
			}

			Console.Write (output.ToString (0, output.Length - 2));
		}

		//????????????
		static int Ceiling ( int year )
		{
			int tmp = year % 4 != 0 ? 4 : 0;
			int ceiling = year + tmp - year % 4;

			while (ceiling % 100 == 0 && ceiling % 400 != 0)
			{
				ceiling += 4;
			}

			return ceiling;
		}

		//????????¨???
		static int Floor ( int year )
		{
			int floor = year - year % 4;

			while (floor % 100 == 0 && floor % 400 != 0)
			{
				floor -= 4;
			}

			return floor;
		}
	}
}