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

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main {

	public static void main(String args[] ) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String line = br.readLine();
		String output = "";
		List<String> input = new ArrayList<String>();
		while (line != null) {
			// CTRL+Z??§??\????????????
			if("0 0".equals(line)) {
				break;
			}
			input.add(line);

			line = br.readLine();
		}
		boolean isFirstRow = true;
		for (String inputLine : input) {
			if (!isFirstRow) {
				System.out.println();
			}
			String[] inputData = inputLine.split(" ");
			int startYear = Integer.parseInt(inputData[0]);
			int endYear = Integer.parseInt(inputData[1]);
			if (startYear == 0 && endYear == 0) {
				break;
			}
			boolean isEmpty = true;
			for (int i = startYear; i <= endYear; i++) {
				if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
					System.out.println(i);
					isEmpty = false;
				}
			}
			if (isEmpty) {
				System.out.println("NA");
			}
			isFirstRow = false;
		}
    }

}