/* package whatever; // don't place package name! */
import java.text.SimpleDateFormat;
import java.text.ParseException;

import java.util.Calendar;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.Map;
import java.util.TreeMap;


/* 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
	{
	  Set<MyDate> allDates = getAllDates();
      Map<String, Set<MyDate>> map = new TreeMap<>();
      for (MyDate date : allDates) {
        String key = date.getWeekStamp();
        if (map.get(key) == null) {
          map.put(key, new HashSet<MyDate>());
        }
        map.get(key).add(date);
      }
      printDates(map);
	}
	
	public static Set<MyDate> getAllDates() {
       String dateFormat = "MM/dd/yyyy";
       String[] inputDates = {
           "04/01/2015",
           "04/02/2015",
           "04/03/2015",
           "04/04/2015",
           "04/05/2015",
           "04/06/2015",
           "04/07/2015",
           "04/08/2015",
           "04/09/2015"};
           
       Set<MyDate> dates = new HashSet<>(inputDates.length);
       for (String s : inputDates) {
         MyDate date = new MyDate(s, dateFormat);
         dates.add(date);
       }
       return dates;
    }

    public static void printDates(Map<String, Set<MyDate>> map) {
       int week = 0;
       for (Set<MyDate> set : map.values()) {
          week++;
          System.out.println("Week : " + week);
          for (MyDate date : set) {
            System.out.println(date.getDate());  
          }
        }
    }
    
    private static class MyDate {
      final Calendar cal;
      
      public MyDate (String strDate, String dateFormat) {
        cal = Calendar.getInstance();
        try {
          SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
          Date date = sdf.parse(strDate);
          cal.setTime(date);
        }
        catch (ParseException e) {
          throw new IllegalArgumentException("Invalid date " + strDate);
        }
      }
      
      public String getWeekStamp() {
        return cal.get(Calendar.YEAR) + "-" + cal.get(Calendar.WEEK_OF_YEAR);
      }
      
      public Date getDate() {
        return cal.getTime();
      }
    }
	
}