import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class HackerRankBribing {
    public static void methodToImplement(int[] q) {
        List<Integer> finalQueue = new ArrayList<>();
        for(int i: q) {
            finalQueue.add(i);
        }

        List<Integer> originalQueue = (List<Integer>) ((ArrayList<Integer>) finalQueue).clone();
        Collections.sort(originalQueue, Integer::compareTo);
        System.out.println("Original queue " + originalQueue);


        System.out.println("Final queue is: " + finalQueue);

        boolean isOK = true;

        List<Integer> stepsList = new ArrayList<>();
        for(int i=0;i<finalQueue.size();i++) {
            //Loop through all indexes starting from 0
            int steps = (finalQueue.get(i) - 1) - i;
            stepsList.add(steps);

            if(steps>2 || steps <-2){
                isOK = false;
            }
        }
        System.out.println("Steps per person: " + stepsList);

        List<Integer> peopleBribingSteppingLeft = stepsList.stream().filter(i-> i>0).collect(Collectors.toList());
        System.out.println("Stepping left (has bribed those stepping right) " + peopleBribingSteppingLeft);
        int sum = 0;
        for(int personstep: peopleBribingSteppingLeft) {
            sum=sum+ personstep;
        }

        if (isOK) {
            System.out.println(sum);
        } else {
            System.out.println("Too chaotic");
        }

    }

    public static void main (String[] args) {
        //int[] q ={2,1,5,3,4};
       //int[] q ={2,5,1,3,4};
        int[] q = {1,2,5,3,7,8,6,4}; //DEtta ska vara ok, men jag har inte gjort lokiken sådan... (svar: 7)
        methodToImplement(q);
    }
}
