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

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

/* 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
	{

        MyObject object0 = new MyObject(null, "2018-12-01");
        MyObject object1 = new MyObject(1, "2018-12-02");
        MyObject object2 = new MyObject(5, "2018-12-03");
        MyObject object3 = new MyObject(null, "2018-12-04");
        MyObject object4 = new MyObject(null, "2018-12-05");
        MyObject object5 = new MyObject(2, "2018-12-06");
        MyObject object6 = new MyObject(null, "2018-12-07");

        List<MyObject> list = new ArrayList<>(Arrays.asList(object0, object1, object2, object3, object4, object5, object6));
        MyObject[] res = new MyObject[list.size()];

        for (Iterator<MyObject> ite = list.iterator(); ite.hasNext(); ) {
            MyObject obj = ite.next();
            if (obj.getPriority() != null) {
                res[obj.getPriority() - 1] = obj;
                ite.remove();
            }
        }

        list.sort(Comparator.comparing(MyObject::getCreatedAt).reversed());

        System.out.println();
        
        int indicList = 0;
        for (int i = 0; i < res.length; i++) {
            if (res[i] == null) {
                res[i] = list.get(indicList++);
            }
        }

        for (MyObject re : res) {
            System.out.println(re);
        }

	}
}


class MyObject {

    private Integer priority;

    private LocalDate createdAt;

    MyObject(Integer priority, String createdAt) {
        this.priority = priority;
        this.createdAt = LocalDate.parse(createdAt);
    }

    Integer getPriority() {
        return priority;
    }

    LocalDate getCreatedAt() {
        return createdAt;
    }

    @Override
    public String toString() {
        return "MyObject{" +
                "priority=" + priority +
                ", createdAt=" + createdAt +
                '}';
    }
}
