import java.text.*;
import java.util.*;

public class IterateAllLocales {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        cal.set(2020, 1, 1, 0, 0, 0);
        for(String tzId : TimeZone.getAvailableIDs()) {
            if (tzId.startsWith("Etc/")) continue;
            TimeZone tz = TimeZone.getTimeZone(tzId);
            TreeMap<String, List> map = new TreeMap<String, List>();
            for (Locale loc : Locale.getAvailableLocales()) {
                SimpleDateFormat sdf = new SimpleDateFormat("z", loc);
                sdf.setTimeZone(tz);
                String tzName = sdf.format(cal.getTime());
                if (map.containsKey(tzName)) {
                    List list = map.get(tzName);
                    list.add(loc.toString());
                } else {
                    ArrayList<String> list = new ArrayList<String>();
                    list.add(loc.toString());
                    map.put(tzName, list);
                }
            }
            for(String k : map.keySet()) {
                System.out.println(tzId+": "+k+"("+map.get(k).size()+") "+
                    Arrays.toString(map.get(k).toArray()));
            }
        }
    }
}
