import java.util.*;

public class Arraz {


    public  int sumValuesOfArray(int[] inputArray) {

        int sum=0;
        for(int i=0;i<= inputArray.length-1;i++){
            sum= sum+ inputArray[i];
        }
            return sum;
    }


    public  double sumDoublesOfArray(double[] inputArray) {

        double sum=0;
        for(int i=0;i<= inputArray.length-1;i++){
            sum= (sum+ inputArray[i]);
        }
        return sum;
    }


    public  int averageOfArray(int[] inputArray) {

        int sum=0;
        for(int i=0;i<= inputArray.length-1;i++){
            sum= sum+ inputArray[i];
        }
        return sum/2;
    }


    public  double doubleAverageOfArray(double[] inputArray) {

        double sum=0;
        for(int i=0;i<= inputArray.length-1;i++){
            sum= (sum+ inputArray[i]);
        }
        return sum/2;
    }

    public  boolean contains(int[] inputArray,int containsValue ){
        for(int i=0;i<=inputArray.length-1;i++){
            if(inputArray[i]==containsValue){
                return true;
            }

        }
         return false;
    }


    public  Integer[] reverseArray(Integer[] intArray) {
        Integer[] result = new Integer[intArray.length];
        int index=0;
        for(int i=intArray.length-1;i>=0;i--){
            result[index] =intArray[i];
            index++;

        }
        return result;
    }


    public  OddEven getOddEvensOfArray(int[] intArray){
        int evenCount=0;
        int oddCount=0;

        for(int i=0;i<=intArray.length-1;i++){
            if (intArray[i]%2==0){
                evenCount++;
            }
            else {
                oddCount++;
            }
        }
       return new OddEven(oddCount,evenCount);
    }

    public  int findIndexOf(int[] inputArray, int value){

        int result =0;
        for(int i=0;i<inputArray.length;i++){
            if(inputArray[i]== value){
                result= i;
            }

        }
        return result;
    }

    public  Integer[] copyarrayByLoop(Integer[] inputArray) {

        Integer[] arr2=new Integer[inputArray.length];
        for(int i=0;i<inputArray.length;i++){
                arr2[i] = inputArray[i];
            System.out.println(arr2[i]);
        }
        return arr2;
    }

    public  Integer[] copyArrayByInterator(Integer[] inputArray) {
        Integer[] arr2=new Integer[inputArray.length];
        List<Integer> list= new ArrayList<>(Arrays.asList(inputArray));

        Iterator itr= list.iterator();
        while(itr.hasNext()) {
            itr.next();
            System.out.println(itr.next());
            list.add((Integer) itr.next());
        }

        return list.toArray(new Integer[0]);
    }

    public  Integer[] removeElementFromArray(Integer[] inputArray, int element){

        List<Integer> list= new ArrayList<>();
        for(Integer elem: inputArray){
            if(elem != element){
                list.add(elem);
            }
        }

        return list.toArray(new Integer[0]);
    }


    public  int insertIntoArrayAt(Integer[] inputArray, int index,int value){

        Integer[] result= new Integer[inputArray.length+1] ;
        for(int i=0;i<inputArray.length;i++) {


            if (i < index){
                result[i] = inputArray[i];
            }
           else   if (i == index){
                result[index] = value;

            }
           else   if (i > index)
            {
                result[i+1] = inputArray[i];

            }
        }
              return  result[index];


        }





    public  MaxMin findMaxMinOfArray(int[] inputArray){

        Arrays.sort(inputArray);

        int maxNum=0;
        int minNum=0;
        for(int i=0;i <inputArray.length;i++){
           minNum= inputArray[0];
           maxNum=inputArray[inputArray.length-1];
        }
        return new MaxMin(maxNum,minNum);

    }


    public Integer[] sortArray(Integer[] inputArray){
        int temp;
        for(int i=0;i<inputArray.length;i++){
            for(int j=i;j<inputArray.length;j++){
                if(inputArray[i]>inputArray[j]) {
                    temp = inputArray[i];
                    inputArray[i] = inputArray[j];
                    inputArray[j] = temp;
                }
            }
        }
        return inputArray;
    }

    public Integer[] removeDupesFromArray(Integer[] inputArray) {
        sortArray(inputArray);

        List<Integer>list= new ArrayList<>();
       // Integer[] newArray= new Integer[0];
            list.add(inputArray[0]);


            for (int i = 1; i < inputArray.length; i++) {
                if (inputArray[i] != (inputArray[i - 1])) {
                    // newArray[i]= inputArray[i];
                    list.add(inputArray[i]);
                }
            }

        return list.toArray(new Integer[0]);


    }


    public Double find2ndLargestValueFromArray(Double[] inputArray) {
        Double temp;
        for(int i=0;i<inputArray.length;i++){
            for(int j=i;j< inputArray.length;j++){
                if(inputArray[i]>inputArray[j]){
                    temp=inputArray[i];
                    inputArray[i]= inputArray[j];
                    inputArray[j]=temp;
                }
            }
        }
        return inputArray[inputArray.length-2];

    }


    public ArrayList<Integer> makeMeAnArrayListFromArray(Integer[] inputArray){

            ArrayList<Integer> list= new ArrayList<>();
            for(Integer list1: inputArray){
                list.add(list1);

            }

        return list;
    }


    public Integer[] makeMeAnArrayFromArrayList(List<Integer> inputList){
        Integer [] arr= new Integer[inputList.size()];
        int index =0;
        for (Integer elem:inputList) {

            arr[index]=elem;
            index =index+1;
        }
        return arr;
    }


    public String arrayToString(Integer[] inputarray){
        String result="";
        for (Integer elem:inputarray) {
            result+= elem.toString();
        }
        return result;
    }
    public boolean check2ArraysForEqual(Integer[] input1, Integer[] input2){
        if(input1.length== input2.length){

            if(arrayToString(input1).equals(arrayToString(input2))){
                return true;
            }
            else  return false;
        }
        else
            return false;

    }

    public int averageArrayWithoutMaxMin(int[] inputArray){
        MaxMin mn=findMaxMinOfArray(inputArray);
        int max=mn.max;
        int min=mn.min;
        int sum=0;
        for(int i=0;i<inputArray.length;i++){

            if(inputArray[i]==max || inputArray[i]== min){
                sum=sum+0;
            }
            else {
                sum =sum+ inputArray[i];
            }
        }
        return sum/inputArray.length;
    }


    public boolean arrayHas65and77(int[] inputArray){

       boolean result = false;
        for (int i=0;i<inputArray.length;i++) {
            if(contains(inputArray,65) && contains(inputArray,77)) {
                result= true;
            }
            else result =false;

        }
        return  result;
    }

    public boolean theTotalofTensIs30(int[] inputArray){
        int sum=0;
        boolean result= false;
        for(Integer elem: inputArray) {
            if (elem == 10) {
                sum = sum + elem;

            }
        }
                if(sum==30){
                    result= true;
                }
                else result= false;



        return result;
    }


    public String smallAndSecondSmall(int[] inputArray){

        int temp;
        for(int i=0;i<inputArray.length;i++){
            for(int j=i;j< inputArray.length;j++){
                if(inputArray[i]>inputArray[j]){
                    temp=inputArray[i];
                    inputArray[i]= inputArray[j];
                    inputArray[j]=temp;
                }
            }
        }


        return "smallest: " + inputArray[0] + " second smallest: " + inputArray[1];
    }



    public Integer[] copyArray(Integer[] inputArray){
        int index=0;

        Integer[] arr= new Integer[inputArray.length];
        for(Integer elem: inputArray){
            arr[index]=elem;
            index++;
        }
        return arr;
    }

    public Integer[] makeMeACopyPleaseAndReverse(Integer[] inputArray){

        int index=0;

        Integer[] arr= new Integer[inputArray.length];
        for(Integer elem: inputArray){
            arr[index]=elem;
            index++;
        }
        Integer[] result = new Integer[arr.length];
        int index1=0;
        for(int i=arr.length-1;i>=0;i--){
            result[index1] =arr[i];
            index1=index1+1;

        }
        return result;

//        copyArray(inputArray);
//        reverseArray(inputArray);
//        return inputArray;
    }



    public Integer[] removeLastItemAndCopy(Integer[] inputArray){
        Integer[] arr= new Integer[inputArray.length-1];
        for(int i=0;i<inputArray.length-1;i++){
            arr[i]= inputArray[i];
        }

        return arr;
    }


    public Integer[] removeFirstItemAndCopy(Integer[] inputArray){
        Integer[] arr= new Integer[(inputArray.length-1)];
        for(int i=0;i<inputArray.length-1;i++){

           arr[i]= inputArray[i+1];
            System.out.println(arr[i]);
        }

        return arr;
    }



    public Integer[] insertAtStartAndCopy(Integer[] inputArray, int value){

        Integer[] arr= new Integer[inputArray.length+1];
        arr[0]= value;
        for(int i=0;i<inputArray.length;i++){
            arr[i+1]=inputArray[i];

        }

//        for(int j=0;j<arr.length;j++){
//
//        }
        return arr;
    }


    public Integer[] insertAtEndAndCopy(Integer[] inputArray, int value){

        Integer[] arr= new Integer[inputArray.length+1];
        for(int i=0;i<inputArray.length;i++){
            arr[i]=inputArray[i];

        }
        arr[arr.length-1]=value;

        return arr;
    }

//    public void addElement(Integer[] inputArray, Integer element){
//
//
//        List<Integer> list= new ArrayList<>(inputArray.length);
//        list.add(element);
//        list.toArray();
//    }


    public Integer[] sortArrayIntoEvensThenOdds(Integer[] inputArray){

        List<Integer> evenlist= new ArrayList<>();
        List<Integer> oddList= new ArrayList<>();
        for(Integer elem: inputArray){
            if(elem%2==0){
                evenlist.add(elem);
            }
            else{
                oddList.add(elem);

            }
        }
        Integer[] even= evenlist.toArray( new Integer[0]);
        Integer[] odd= oddList.toArray( new Integer[0]);
        sortArray(even);
        sortArray(odd);
       // Integer[] resultArray= new Integer[inputArray.length];
        List<Integer> resultList= new ArrayList<>();

        for (Integer element :even) {
            resultList.add(element);

        }
        for (Integer element :odd) {
            resultList.add(element);

        }

        return resultList.toArray(new Integer[0]);
    }







    public  String[] findCommanItems(String[]arr1, String[]arr2){
        List<String> result= new ArrayList<>();
        for(int i=0;i<=arr1.length-1;i++){
            for(int j=0;j<=arr2.length-1;j++){
                if(arr1[i].equals(arr2[j])){
                    result.add(arr1[i]);
                }
            }
        }
        return  result.toArray(new String[0]);
    }


//    public static String secondLargest(int[] num){
//
//        SortedSet<Integer> set= new SortedSet<Integer>(Arrays.asList(num)) ;
//
////        String result="";
////        Arrays.sort(num);
////
////        for(int i=0;i<num.length;i++){
////            if(num.length-1 <num.length){
////                result= String.valueOf(num.length-1);
////            }
////        }
////        return result;
//
//    }
}
