/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{

	public static void main(String[] args) throws java.lang.Exception{

		// String tz = "Europe/London";
		String tz[] = {"IST", "Asia/Kolkata", "Europe/London"};

		for(String s: tz){
			System.out.println("Testing timezone: "+s);
			System.out.println(nthWeekdayOfMonth(6, 9, 2016, 3, TimeZone.getTimeZone(s)));
			System.out.println(nthWeekdayOfMonth(6, 10, 2016, 3, TimeZone.getTimeZone(s)));
			System.out.println(nthWeekdayOfMonth(6, 11, 2016, 3, TimeZone.getTimeZone(s)));
			System.out.println(nthWeekdayOfMonth(6, 0, 2017, 3, TimeZone.getTimeZone(s)));
			System.out.println(nthWeekdayOfMonth(6, 1, 2017, 3, TimeZone.getTimeZone(s)));
			System.out.println(nthWeekdayOfMonth(6, 2, 2017, 3, TimeZone.getTimeZone(s)));
		}

	}

	public static Date nthWeekdayOfMonth(int dayOfWeek, int month, int year, int week, TimeZone timeZone) {
	    Calendar calendar = Calendar.getInstance();
	    calendar.setTimeZone(timeZone);
	    calendar.set(GregorianCalendar.DAY_OF_WEEK, dayOfWeek);
	    //calendar.set(Calendar.WEEK_OF_MONTH, week);
	    calendar.set(GregorianCalendar.DAY_OF_WEEK_IN_MONTH, week);
	    calendar.set(Calendar.MONTH, month);
	    calendar.set(Calendar.YEAR, year);
	    return calendar.getTime();
	}
}