public class Solution {
    public static volatile List<Person> allPeople = new ArrayList<Person>();

    static {
        allPeople.add(Person.createMale("Иванов Иван", new Date()));  //сегодня родился    id=0
        allPeople.add(Person.createMale("Петров Петр", new Date()));  //сегодня родился    id=1
    }

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat simpleDateFormatIn = new SimpleDateFormat("dd/MM/yyyy", Locale.ENGLISH);
        SimpleDateFormat simpleDateFormatOut = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);

        int iterationNumber;
        int id;
        Date date;
        Person person;
        int i = 1;

        switch (args[0]) {
            case ("-c"):
                synchronized (allPeople) {
                    iterationNumber = (args.length - 1) / 3;
                    while (i < args.length) {
                        date = simpleDateFormatIn.parse(args[i + 2]);
                        if (args[i + 1].equals("м")) {
                            person = Person.createMale(args[i], date);
                            allPeople.add(person);
                        } else {
                            person = Person.createFemale(args[i], date);
                            allPeople.add(person);
                        }
                        if (i == args.length) {
                            System.out.print(allPeople.indexOf(person));
                        } else {
                            System.out.print(allPeople.indexOf(person) + " ");
                        }
                        i = i + 3;
                    }
                    break;
                }
            case ("-u"):
                synchronized (allPeople) {
                    iterationNumber = (args.length - 1) / 4;
                    if (allPeople.size() >= iterationNumber) {
                        while (i < args.length) {
                            id = Integer.parseInt(args[i]);
                            person = allPeople.get(id);
                            date = simpleDateFormatIn.parse(args[i + 3]);
                            if (args[i + 2].equals("м")) {
                                allPeople.set(id,Person.createMale(args[i+1], date));
                            } else {
                                allPeople.set(id,Person.createFemale(args[i+1], date));
                            }
                            i = i + 4;
                        }
                    }
                    break;
                }
            case ("-d"):
                synchronized (allPeople) {
                    iterationNumber = args.length - 1;
                    while ((i <= iterationNumber)) {
                        id = Integer.parseInt(args[i]);
                        person = allPeople.get(id);
                        person.setName(null);
                        person.setBirthDate(null);
                        person.setSex(null);
                        allPeople.set(id, person);
                        i++;
                    }
                    break;
                }
            case  ("-i"):
                synchronized (allPeople) {
                    iterationNumber = args.length - 1;
                    while (i != iterationNumber) {
                        id = Integer.parseInt(args[i]);
                        if (allPeople.get(id).getSex().equals(Sex.MALE)) {
                            System.out.println(allPeople.get(id).getName() + " м " + simpleDateFormatOut.format(allPeople.get(id).getBirthDate()));
                        } else {
                            System.out.println(allPeople.get(id).getName() + " ж " + simpleDateFormatOut.format(allPeople.get(id).getBirthDate()));
                        }
                        i++;
                    }
                    break;
                }
        }
    }
}