import java.util.*;

/*
 * public class Interval {
 *   int start;
 *   int end;
 *   public Interval(int start, int end) {
 *     this.start = start;
 *     this.end = end;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param intervals Interval类ArrayList 
     * @return Interval类ArrayList
     */
    public ArrayList<Interval> merge (ArrayList<Interval> intervals) {
        // write code here
        // write code here
        ArrayList<Interval> list = new ArrayList<>();
        int n = intervals.size();
        if (n == 0) return list;
        Collections.sort(intervals, new Comparator<Interval>(){
            public int compare(Interval a1, Interval a2) {
                return a1.start - a2.start;
            }
        });
         
        list.add(intervals.get(0));
        for(int i = 1; i < n; i++) {
            Interval nums = list.get(list.size() - 1);
            if (intervals.get(i).start > nums.end) {
                list.add(intervals.get(i));
            } else {
                nums.end = Math.max(nums.end, intervals.get(i).end);
            }
        }
        return list;
    }
}