import java.util.*;

public class Solution 
{
    static int ascendingChainsComplete;
    static int descendingChainsComplete;
    static int standaloneCount;
    static String ticker="";
    static int ascendingCounter;
    static int descendingCounter;
    static boolean isStandalone=false;
    
    static int counter = 0;
    
    public static void main (String[] args)
    {
        //************ALL DOCUMENTED TEST CASES**********
        //Ascending
        //float[] nums = new float[]{0f,2f,3f,4f,6f,8f,9f};   //Test case 1    PASS             
        //float[] nums = new float[]{-1f};   //Test case 2             PASS             
        //float[] nums = new float[]{0f};   //Test case 3       PASS                    
        //float[] nums = new float[]{0,1f,2,4f,5,7f};   //Test case 4    PASS               
        
        //Descending
        //float[] nums = float int[]{9f,8f,6f,4f,3f,2f,0f};    PASS            
        //float[] nums = new float[]{-1f};                PASS             
        //float[] nums = new float[]{0f};          PASS                    
        //float[] nums = new float[]{7f,5f,4f,2f,1f,0f};      PASS 
        
        //For some reason, no test cases above went through junction 8. All others are valid.
        //So these were new devised cases.....
        //float[] nums = new float[]{0f,1f,2f,4f,5f,7f,8f,10f,14f};   //Test case 4    PASS            
        //float[] nums = new float[]{0f,2f,4f,5f,7f,8f,10f,14f,17f,19f,23f,24f,25f,26f,35f,42f,43f,44f};  PASS     
        //float[] nums = new float[]{5f,4f,3f,4f,5f,7f,6f,10f,14f,17f,19f,23f,24f,25f,26f,35f,42f,47f,60f,61f};  PASS
        //float[] nums = new float[]{7f,6f,9f,3f,5f,8f};
        
        //Merging both ascending and descending code
        //float[] nums = new float[]{5f,4f,3f,4f,5f,6f,8f,8f};   PASS
        //float[] nums = new float[]{5f,4f,3f,4f,5f,7f,6f,5f,10f,14f,17f,19f,23f,24f,25f,26f,35f,34f,33f,47f};  PASS
        
        //float[] nums = new float[]{5f,6f,7f,6f,5f,9f,10f,11f,44f,45f,46f,47f,46f,45f,44f,43f,25f,24f,24f,23f,23f,22f};  //using ascending, descending and non-changing....PASS
        
        //float[] nums = new float[]{5f,9f,13f,2f,3f,4f,3f,1f,2f,3f,4f,5f,6f,22f,66f,65f,65f,64f,63f,90f,89f,60f}; //using standalone numbers in between and also ascending/descending...PASS
        //float[] nums = new float[]{1.5f,1.9f,  1.13f,  1.2f, 1.3f, 1.4f, 1.5f, 1.3f,  1.1f,  1.2f};
        
        //float[] nums = new float[]{1.5f,1.9f,  1.13f,  1.2f, 1.1f, 1.4f, 1.5f, 1.3f,  1.1f,  1.2f};
        
        //float[] nums = new float[]{2.0f,4.0f,2.0f,1.2f,1.3f,1.4f,1.3f,1.1f,1.2f,1.3f,1.4f,1.5f,1.6f,1.22f,1.66f,1.65f,1.65f,1.64f,1.63f,1.90f,1.89f,1.60f}; 
        
        //repeat numbers
        //float[] nums = new float[]{2,2,2,4,4,1,1,9,9};  PASS
        
        
        float[] nums = {
        //4.9f, 4.8f, 4.7f, 4.6f, 4.7f, 4.8f, 4.9f, 5.0f, 48.5f, 91.7f  //in test documentation,  used to test the transition 4.6
        //4.9f, 4.8f, 4.7f, 4.5f, 4.6f, 4.7f, 4.9f, 5.0f, 48.5f, 91.7f  //in test documentation , used to test 4.5f standalone merging upwards into ascending
        //0.9f, 0.8f, 0.7f, 0.6f, 0.7f, 0.8f, 0.9f, 5.0f   //test case in documentation where I resolved end of range with standalone....
        //86.0f,77.7f, 77.8f, 77.9f, 78.0f, 78.1f,78.0f, 77.9f, 77.8f, 77.7f, 25.3f, 72.8f, 42.5f   //this will be section of the ChatGPT data in order to ensure I can resolve issues quicker
        //25.3f, 72.8f,42.5f, 74.5f, 74.4f, 74.3f, 74.2f, 74.1f, 74.2f, 74.3f, 74.4f,74.5f   //this will be section of the ChatGPT data in order to ensure I can resolve issues quicker
        //47.3f, 47.2f, 47.3f, 47.4f,47.5f  //issues encountered at end of the chatGPT array. it did not merge last two items.
        
        //47.4f, 47.3f,47.4f   //realised at end of the documentation, that this is failing...
        //47.3f, 47.4f,47.3f   // NEED TO FIX THIS ALSO, resolved as part of the above one...
        //47.4f, 47.3f,47.5f  //NEED TO FIX THIS ALSO
        //47.3f, 47.4f,47.5f  //late fixes in code   -  FAIL   (this is straight forward ascending)  -  FAIL************
        //47.3f, 47.2f,47.3f,47.4f  //late fixes in code 
        //47.4f,47.3f,47.2f,47.4f  //late fixes in code
        //47.3f,47.2f,47.3f,47.4f,47.5f  //late fixes in code
        //47.3f,47.2f,47.3f //late fixes in code
         //47.2f,47.3f,47.2f //late fixes in code
        //47.2f,47.3f,47.2f,47.1f //late fixes in code
        
        //this is first chatGPT extract
        //30032025/SummaryRange/5/4/ChatGPTgeneratedNumbers.txt
        4.9f, 4.8f, 4.7f, 4.6f, 4.7f, 4.8f, 4.9f, 5.0f, 48.5f, 91.7f, 82.9f, 57.6f, 57.5f, 57.4f, 57.3f, 57.2f, 57.3f, 57.4f, 57.5f, 57.6f, 26.1f, 25.4f, 21.2f, 83.5f, 56.3f, 56.2f, 56.1f, 56.0f, 55.9f, 55.8f, 55.7f, 55.6f, 13.9f, 35.7f, 54.8f, 54.7f, 54.6f, 54.5f, 54.6f, 54.7f, 54.8f, 54.9f, 49.9f,  9.6f, 86.0f, 77.7f, 77.8f, 77.9f, 78.0f, 78.1f, 78.0f, 77.9f, 77.8f, 77.7f, 25.3f, 72.8f, 42.5f, 74.5f, 74.4f, 74.3f, 74.2f, 74.1f, 74.2f, 74.3f, 74.4f, 74.5f, 90.6f, 30.0f, 66.5f, 11.2f, 64.2f, 64.3f, 64.4f, 64.5f, 64.6f, 64.5f, 64.4f, 64.3f, 64.2f, 18.8f, 49.3f, 60.3f, 51.1f, 52.5f, 52.4f, 52.3f, 52.2f, 52.1f, 52.0f, 51.9f, 51.8f,  1.8f, 70.5f, 69.2f, 79.8f, 86.7f, 86.6f, 86.5f, 86.4f, 86.3f, 86.4f, 86.5f, 86.6f, 86.7f, 17.9f, 80.8f, 23.9f, 89.6f, 36.0f, 35.9f, 35.8f, 35.7f, 35.6f, 35.7f, 35.8f, 35.9f, 36.0f, 95.8f, 28.9f, 71.6f,  5.3f, 60.0f, 60.1f, 60.2f, 60.3f, 60.4f, 60.3f, 60.2f, 60.1f, 60.0f, 45.2f, 16.2f, 50.6f, 34.1f, 68.4f, 68.3f, 68.2f, 68.1f, 68.0f, 67.9f, 67.8f, 67.7f, 67.6f, 89.9f, 27.1f, 14.4f, 98.9f, 63.8f, 63.9f, 64.0f, 64.1f, 64.2f, 64.1f, 64.0f, 63.9f, 63.8f, 54.8f, 22.6f, 41.1f, 91.4f, 47.9f, 47.8f, 47.7f, 47.6f, 47.5f, 47.6f, 47.7f, 47.8f, 47.9f, 58.5f, 70.8f, 11.3f, 58.6f, 58.7f, 58.8f, 58.9f, 59.0f, 58.9f, 58.8f, 58.7f, 58.6f, 35.3f, 76.8f, 44.2f, 96.7f, 52.0f, 51.9f, 51.8f, 51.7f, 51.6f, 51.5f, 51.4f, 51.3f, 51.2f, 20.3f, 93.8f, 37.8f, 61.8f, 30.6f, 30.7f, 30.8f, 30.9f, 31.0f, 30.9f, 30.8f, 30.7f, 30.6f, 12.1f, 84.4f,  2.9f, 63.2f, 69.7f, 69.6f, 69.5f, 69.4f, 69.3f, 69.4f, 69.5f, 69.6f, 69.7f, 55.4f, 81.6f, 32.4f,  6.0f, 79.8f, 79.9f, 80.0f, 80.1f, 80.2f, 80.1f, 80.0f, 79.9f, 79.8f, 88.2f, 21.3f, 45.1f, 90.3f, 42.3f, 42.2f, 42.1f, 42.0f, 41.9f, 41.8f, 41.7f, 41.6f, 41.5f, 62.9f, 97.6f, 53.1f, 24.7f, 66.0f, 65.9f, 65.8f, 65.7f, 65.6f, 65.7f, 65.8f, 65.9f, 66.0f, 49.6f, 83.5f, 38.6f, 10.4f, 77.6f, 77.5f, 77.4f, 77.3f, 77.2f, 77.3f, 77.4f, 77.5f, 77.6f,  3.1f, 60.6f, 88.0f, 92.6f, 74.6f, 74.7f, 74.8f, 74.9f, 75.0f, 74.9f, 74.8f, 74.7f, 74.6f, 31.4f, 13.4f, 55.7f, 64.5f, 50.2f, 50.1f, 50.0f, 49.9f, 49.8f, 49.9f, 50.0f, 50.1f, 50.2f, 58.0f, 67.8f, 41.3f, 96.8f, 72.3f, 72.2f, 72.1f, 72.0f, 71.9f, 71.8f, 71.7f, 71.6f, 71.5f, 29.7f, 81.9f, 18.0f, 46.4f, 34.3f, 34.4f, 34.5f, 34.6f, 34.7f, 34.6f, 34.5f, 34.4f, 34.3f, 85.7f, 14.3f, 26.5f, 56.9f, 61.6f, 61.5f, 61.4f, 61.3f, 61.2f, 61.1f, 61.0f, 60.9f, 60.8f, 43.6f, 89.0f,  7.1f, 75.2f, 39.2f, 39.1f, 39.0f, 38.9f, 38.8f, 38.9f, 39.0f, 39.1f, 39.2f, 94.9f, 23.7f, 48.2f, 87.2f, 52.8f, 52.9f, 53.0f, 53.1f, 53.2f, 53.1f, 53.0f, 52.9f, 52.8f, 12.8f, 97.0f, 20.7f, 68.9f, 73.1f, 73.0f, 72.9f, 72.8f, 72.7f, 72.6f, 72.5f, 72.4f, 72.3f, 54.6f, 15.5f, 40.1f, 30.8f, 63.5f, 63.4f, 63.3f, 63.2f, 63.1f, 63.0f, 62.9f, 62.8f, 62.7f, 49.2f,  5.9f, 91.5f, 84.7f, 51.0f, 50.9f, 50.8f, 50.7f, 50.6f, 50.7f, 50.8f, 50.9f, 51.0f, 78.7f, 36.4f, 59.9f, 95.3f, 44.9f, 44.8f, 44.7f, 44.6f, 44.5f, 44.4f, 44.3f, 44.2f, 44.1f, 83.6f, 25.9f, 32.1f, 11.1f, 67.5f, 67.4f, 67.3f, 67.2f, 67.1f, 67.2f, 67.3f, 67.4f, 67.5f, 52.7f, 98.0f, 19.5f, 60.7f, 28.1f, 28.0f, 27.9f, 27.8f, 27.7f, 27.8f, 27.9f, 28.0f, 28.1f, 70.7f, 54.5f, 13.5f, 77.1f, 41.2f, 41.1f, 41.0f, 40.9f, 40.8f, 40.7f, 40.6f, 40.5f, 40.4f, 59.4f, 90.0f,  6.7f, 85.4f, 69.5f, 69.6f, 69.7f, 69.8f, 69.9f, 70.0f, 70.1f, 70.2f, 70.3f, 38.0f, 12.4f, 95.2f, 57.1f, 50.4f, 50.3f, 50.2f, 50.1f, 50.0f, 49.9f, 49.8f, 49.7f, 49.6f, 61.7f, 27.6f, 43.1f, 83.8f, 73.4f, 73.5f, 73.6f, 73.7f, 73.8f, 73.7f, 73.6f, 73.5f, 73.4f, 16.3f, 97.2f, 21.5f, 66.2f, 47.1f, 47.2f, 47.3f, 47.4f, 47.5f, 47.4f, 47.3f, 47.2f, 47.1f, 33.5f, 76.3f, 42.9f,  4.3f, 62.4f, 62.3f, 62.2f, 62.1f, 62.0f, 61.9f, 61.8f, 61.7f, 61.6f, 82.4f, 24.4f, 58.4f,  9.7f, 90.4f, 90.3f, 90.2f, 90.1f, 90.0f, 89.9f, 89.8f, 89.7f, 89.6f, 34.9f, 14.7f, 30.2f, 96.2f, 52.4f, 52.3f, 52.2f, 52.1f, 52.0f, 51.9f, 51.8f, 51.7f, 51.6f, 71.8f, 59.2f, 10.6f, 84.2f, 63.7f, 63.8f, 63.9f, 64.0f, 64.1f, 64.0f, 63.9f, 63.8f, 63.7f, 46.6f, 18.2f, 45.4f, 82.0f, 78.6f, 78.5f, 78.4f, 78.3f, 78.2f, 78.3f, 78.4f, 78.5f, 78.6f, 95.4f, 32.6f, 23.3f, 68.8f, 41.8f, 41.7f, 41.6f, 41.5f, 41.4f, 41.3f, 41.2f, 41.1f, 41.0f, 58.9f, 27.4f, 56.1f, 88.7f, 50.8f, 50.9f, 51.0f, 51.1f, 51.2f, 51.1f, 51.0f, 50.9f, 50.8f, 12.9f, 72.1f, 33.3f, 67.9f, 74.9f, 74.8f, 74.7f, 74.6f, 74.5f, 74.6f, 74.7f, 74.8f, 74.9f, 49.0f, 21.9f, 61.2f, 93.6f, 55.3f, 55.2f, 55.1f, 55.0f, 55.1f, 55.2f, 55.3f, 55.4f, 55.5f, 43.4f, 61.0f, 47.3f, 47.4f
        
        //small extract taken from second chatGPT extract    
        //40.1f, 40.1f, 35.1f, 35.2f, 35.3f, 35.2f, 35.1f, 85.6f, 85.5f, 85.4f, 85.3f, 85.2f,19.6f, 19.7f, 19.8f, 19.9f, 20.0f, 19.9f, 19.8f, 63.5f    
   
        //this is second chatGPT extract   30032025/SummaryRange/5/4/ChatGPTgeneratedNumbersBetterDataSet.txt     
        //75.0f, 75.0f, 95.6f, 95.7f, 95.8f, 95.9f, 96.0f, 96.1f, 40.1f, 40.1f    //************************FAIL
        
        //this is second chatGPT extract
        //30032025/SummaryRange/5/4/ChatGPTgeneratedNumbersBetterDataSet.txt
        //75.0f, 75.0f, 95.6f, 95.7f, 95.8f, 95.9f, 96.0f, 96.1f, 40.1f, 40.1f,35.1f, 35.2f, 35.3f, 35.2f, 35.1f, 85.6f, 85.5f, 85.4f, 85.3f, 85.2f, 19.6f, 19.7f, 19.8f, 19.9f, 20.0f, 19.9f, 19.8f, 63.5f, 14.9f, 14.9f, 48.6f, 48.5f, 48.4f, 48.3f, 48.2f, 48.3f, 48.4f, 48.5f, 48.6f, 65.2f, 82.1f, 82.2f, 82.3f, 82.4f, 82.5f, 82.4f, 82.3f, 82.2f, 82.1f, 28.9f, 28.8f, 28.7f, 28.6f, 28.5f, 28.4f, 28.3f, 28.2f, 28.1f, 28.0f, 39.0f, 33.6f, 33.7f, 33.8f, 33.9f, 34.0f, 34.1f, 34.2f, 34.3f, 75.9f, 75.9f, 54.3f, 54.2f, 54.1f, 54.0f, 53.9f, 54.0f, 54.1f, 54.2f, 54.3f, 11.5f, 91.4f, 91.5f, 91.6f, 91.7f, 91.8f, 91.7f, 91.6f, 91.5f, 91.4f, 66.8f, 66.9f, 67.0f, 67.1f, 67.2f, 67.3f,  7.7f,  7.7f, 49.6f, 49.6f, 49.6f, 57.7f, 57.8f, 57.9f, 58.0f, 58.1f, 58.0f, 57.9f, 57.8f, 57.7f, 24.2f, 70.5f, 70.4f, 70.3f, 70.2f, 70.1f, 70.0f, 69.9f, 69.8f, 69.7f, 92.2f, 31.3f, 31.4f, 31.5f, 31.6f, 31.7f, 31.8f, 31.7f, 31.6f, 31.5f, 31.4f, 13.3f, 13.3f, 86.4f, 86.3f, 86.2f, 86.1f, 86.0f, 85.9f, 85.8f, 85.7f, 45.0f, 45.1f, 45.2f, 45.3f, 45.4f, 45.5f, 45.4f, 45.3f, 45.2f, 45.1f, 22.2f, 22.2f, 22.2f, 99.0f, 98.9f, 98.8f, 98.7f, 98.6f, 98.5f, 98.6f, 98.7f, 98.8f, 98.9f, 99.0f, 12.8f, 12.9f, 13.0f, 13.1f, 13.2f, 13.3f, 13.4f, 13.5f, 13.6f, 13.7f, 55.4f, 55.5f, 55.6f, 55.7f, 55.8f, 55.9f, 55.8f, 55.7f, 55.6f, 55.5f, 40.2f, 40.2f, 40.2f, 83.0f, 82.9f, 82.8f, 82.7f, 82.6f, 82.5f, 82.4f, 82.5f, 82.6f, 82.7f, 82.8f,30.8f, 30.9f, 31.0f, 31.1f, 31.2f, 31.1f, 31.0f, 30.9f, 30.8f, 18.5f,62.9f, 63.0f, 63.1f, 63.2f, 63.3f, 63.4f, 63.3f, 63.2f, 63.1f, 63.0f,41.2f, 41.1f, 41.0f, 40.9f, 40.8f, 40.7f, 40.6f, 40.5f, 40.4f, 40.3f,18.7f, 18.8f, 18.9f, 18.8f, 18.7f, 60.7f, 60.6f, 60.5f, 60.4f, 60.3f,60.4f, 60.5f, 60.6f, 60.7f, 71.3f, 71.4f, 71.5f, 71.6f, 71.7f, 71.6f,71.5f, 71.4f, 71.3f, 55.1f
        
        //75.0f, 75.0f, 95.6f, 95.7f, 95.8f, 95.9f, 96.0f, 96.1f, 40.1f, 40.1f,35.1f, 35.2f, 35.3f, 35.2f, 35.1f, 85.6f, 85.5f, 85.4f, 85.3f, 85.2f, 19.6f, 19.7f, 19.8f, 19.9f, 20.0f, 19.9f, 19.8f, 63.5f, 14.9f, 14.9f, 48.6f, 48.5f, 48.4f, 48.3f, 48.2f, 48.3f, 48.4f, 48.5f, 48.6f, 65.2f, 82.1f, 82.2f, 82.3f, 82.4f, 82.5f, 82.4f, 82.3f, 82.2f, 82.1f, 28.9f, 28.8f, 28.7f, 28.6f, 28.5f, 28.4f, 28.3f, 28.2f, 28.1f, 28.0f, 39.0f, 33.6f, 33.7f, 33.8f, 33.9f, 34.0f, 34.1f, 34.2f, 34.3f, 75.9f
       
        //***THESE ARE EXTRACTS FROM CHATGPT second extract.... *****
        //Trying to understand why failing after changes in code.. It now passes
        //75.9f, 75.9f, 54.3f, 54.2f, 54.1f, 54.0f, 53.9f, 54.0f, 54.1f, 54.2f, 54.3f, 11.5f  //(RESOLVED)
        //I am not sure where (53.9->54.0) has arisen from..
        //I will quickly investigate
        //[33.9->34.3, 75.9, 54.3->53.9, (53.9->54.0), 53.9->54.3, 11.5, 91.4->91.8]
       
        //34.1f,34.2f,34.3f,75.9f,75.9f,54.3f,54.2f,54.1f,54.0f,53.9f,54.0f,54.1f,54.2f,54.3f
       
       
        //focussing on 2-3 runs of ascending/descending and overlapping transition
        //*****************************************************
         
        //****PASS CASES*************************************************************************
         
        //3.5f,3.4f,3.0f,2.9f,2.5f,2.4f   //descending descending descending
        //3.5f,3.4f,3.0f,2.9f,4.5f,4.6f   //descending descending ascending
        
        //3.0f,2.7f,2.5f,2.4f,2.5f,2.6f  //changed last digit, want to see how it handles this  ****FAIL**************
        //3.5f,3.4f,3.5f,3.6f,32.1f,32.2f   //descending ascending ascending
       
        //5.0f,4.9f,4.8f  //most basic desecnding
        //47.3f, 47.4f,47.5f  //(RESOLVED)
        //47.3f, 47.4f
        //3.0f,2.7f,2.5f,2.4f,2.5f,2.6f  //(RESOLVED)
        //3.0f,2.7f,2.5f,2.4f,2.5f,4.0f  //exploring above scenario but the descend is slightly longer  ***FAIL**********  (RESOLVED)
         
        //2.5f,2.4f,2.5f
        
        //3.5f,3.6f, 3.5f, 3.6f, 3.5f,3.4f,3.0f,2.9f,2.5f,2.4f  //ascending descending ascending  descending descending descending
        //4.6f,3.5f,3.4f,3.5f,3.4f,6.7f,6.9f   //descending ascending descending        (NOW FAILS)-----------------------------
         
        //3.5f,3.6f,40.0f,40.1f   //it has not written  3.5f,3.6f,40.0f
        
        //new test cases exploring standalone repeat numbers
         
        //40.2f,40.2f,96.0f, 96.1f   //(standalone at front)
        //40.2f,40.2f,96.0f, 96.0f,33.4f   //(two standalones at front, repeat)
        //40.1f, 45.1f  //(it merges them, very basic error in my logic to resolve)
        
        //3.5f,3.6f,40.0f,40.1f   //(simple ascending, ascending)
        //3.5f,3.6f,40.0f,40.1f,56.2f   //(simple ascending, ascending, then standalone)
        //3.5f,3.6f,40.0f,40.1f,56.2f,56.3f  //ascending ascending ascending   (writing 3.5->40.1, 56.2->56.3)
        //3.5f,3.6f,40.1f,4.1f,40.0f   //ascending standalone  (it has only written standalone cases)
       
        //75.0f, 75.0f, 95.6f, 95.7f, 95.8f, 95.9f, 96.0f, 96.1f, 40.1f, 40.1f,35.1f, 35.2f, 35.3f, 35.2f, 35.1f, 85.6f, 85.5f, 85.4f, 85.3f, 85.2f, 19.6f, 19.7f, 19.8f, 19.9f, 20.0f, 19.9f, 19.8f, 63.5f, 14.9f, 14.9f, 48.6f, 48.5f, 48.4f, 48.3f, 48.2f, 48.3f, 48.4f, 48.5f, 48.6f, 65.2f, 82.1f, 82.2f, 82.3f, 82.4f, 82.5f, 82.4f, 82.3f, 82.2f, 82.1f, 28.9f, 28.8f, 28.7f, 28.6f, 28.5f, 28.4f, 28.3f, 28.2f, 28.1f, 28.0f, 39.0f, 33.6f, 33.7f, 33.8f, 33.9f, 34.0f, 34.1f, 34.2f, 34.3f, 75.9f, 75.9f, 54.3f, 54.2f, 54.1f, 54.0f, 53.9f, 54.0f, 54.1f, 54.2f, 54.3f, 11.5f, 
       
       //this now fails, so it appears that it needs to perform 0000Write when k==1-
      
        //3.5f,3.6f,3.5f,40.0f  // (simple ascending, then standalone)
        
         //3.0f,2.5f,2.4f,2.5f,2.8f,2.9f  //(This is fine, but the next example, it writes 2.4->2.5 twice).
         //3.0f,2.7f,2.5f,2.4f,2.5f,4.0f  //exploring above scenario but the descend is slightly longer  ***FAIL**********  (RESOLVED)
         //40.2f,40.2f,96.0f, 96.1f,3.0f,3.0f   //(standalone at end both not writteny)
         //47.3f,40.0f,40.1f,3.5f   //failing adding range twice
         //96.0f, 96.1f, 40.1f, 40.1f  //(does not write standalones at end)
         //56.0f,96.0f, 96.1f,96.2f,96.3f, 40.1f, 40.1f,40.2f,40.2f  //(does not write standalones at end due to skipping iteration)
        
        //LATE TEST CASES**************************************************************************
        //***ISSUE WHEN 2 DESCENDING AT END*** (RESOLVED)
        //3.5f,3.6f,3.7f,3.8f,3.7f
        //3.5f,3.6f,3.7f,3.8f,3.7f,3.9f,4.0f
        //***ISSUE WHEN 4 DESCENDING AT END***
        //3.5f,3.6f,3.7f,3.8f,3.7f,45.5f,45.4f
        //*****NO ISSUE 2 ASCENDING AT END
//3.5f,3.4f,3.35f,3.6f,3.7f,3.8f, 3.7f,3.5f,3.6f,3.7f,3.8f,3.7f,3.6f,3.5f,3.6f,3.7f,3.8f,3.7f,3.9f,4.0f,3.5f,3.6f,3.7f,3.8f,3.7f,45.5f,45.4f,3f,3.2f,3.3f
        
        //used to test the ticker
        //3.5f,3.4f,3.35f,3.6f,3.7f,3.8f, 3.7f,3.5f,3.6f,3.7f,3.8f,3.7f
        // 3.5f,3.6f,3.7f,3.8f, 3.7f,  3.5f,  3.6f,3.7f,3.8f,  3.7f,3.6f,  3.5f
        //3.5f,3.6f,3.7f,3.8f, 3.7f,  3.5f,  3.6f,3.7f,3.8f,  3.7f,3.6f,  3.5f,3.6f,3.7f,3.8f
        //40.1f,35.1f, 35.2f, 35.3f, 35.2f, 35.1f, 85.6f
        //3.5f,3.6f, 3.5f, 3.6f, 3.5f,3.4f,3.0f,2.9f,2.4f,2.5f
        //2.9f,2.8f,2.7f,2.6f,2.5f,2.4f,2.3f,2.4f,2.5f,2.6f,2.7f,2.8f,2.7f,4.0f
        //3.0f,3.1f,3.2f,3.3f,3.2f,3.1f,3.2f,4.0f
        
        //*****NO ISSUE 3 DESCENDING AT END
        //3.5f,3.6f,3.7f,3.8f,3.7f,3.6f
        //Now combining lots of these together...
        //3.5f,3.6f,3.7f,3.8f, 3.7f,  3.5f,  3.6f,3.7f,3.8f,  3.7f,3.6f,  3.5f,3.6f,3.7f,3.8f
        //3.5f,3.6f,3.7f,3.5f,3.4f,3.3f,3.2f,25.0f,25.1f,49,3f,3.33f,3.7f,3.6f
        //3.5f,3.6f,3.7f,3.8f,3.7f,45.5f,45.4f
        //3.5f,3.6f,3.7f,3.8f,3.7f,3.8f
        
        //3.5f,3.6f,3.5f   //it is worth focussing on most simplest example to understand
        
        
        //3.5f,3.6f, 3.5f, 3.6f, 3.5f,3.4f,3.0f,2.9f,2.5f,2.4f  //ascending descending ascending  descending descending descending
        //so need to configure variable 
        
       //3.5f,3.6f,3.5f,3.1f,3.0f,2.9f   //ascending descending descending
       //3.5f,3.6f,3.5f,3.6f   //ascending descending ascending 
       //3.5f,3.6f,3.5f,3.2f,3.1f   //ascending descending descending
       
       //Extreme late test case scenario
       // 0.1f,0.2f,0.1f
       
       //85.3f, 85.2f, 19.6f, 19.7f, 19.8f, 19.9f, 20.0f, 19.9f, 19.8f, 63.5f, 14.9f, 14.9f
       //56.0f,96.0f, 96.1f,96.2f,96.3f, 40.1f, 40.1f,40.2f,40.2f  //(does not write standalones at end due to skipping iteration)
       //56.0f,96.0f, 96.1f,96.2f,96.3f, 40.1f, 40.3f,40.2f,40.2f,40.1f,40.3f,40.5f  //(does not write standalones at end due to skipping iteration)
       //28.6f, 28.5f, 28.4f, 28.3f, 28.2f, 28.1f, 28.0f, 39.0f, 33.6f, 33.7f, 33.8f,
       };
       
       int lengthNums = nums.length;
       
       System.out.println(summaryRanges(nums,lengthNums));
       
       System.out.println("Standalone numbers: " + standaloneCount + "   Ascending chains: " + ascendingChainsComplete + "   Descending chains: " + descendingChainsComplete);
    }
    
    public static String completeTicker(String start, String end, int k, int lengthNums)
    {
        if (!start.equals("END") && !end.equals("END"))
        {
            if (start.equals(end))
            {
                ticker=ticker+"S";
                standaloneCount++;
                isStandalone=true;
            }
            
            if(!isStandalone)
            {
                if (Float.valueOf(end)>Float.valueOf(start))
                {
                    if ((k==lengthNums-2))
                    {
                        ascendingCounter=ascendingCounter+1;
                    }
                    
                    ticker=ticker+"A"+"("+(ascendingCounter)+")";
                    ascendingChainsComplete++;
                    ascendingCounter=0;
                }
                else
                {
                    if (descendingCounter==0 || descendingCounter==1)
                    {
                        descendingCounter=2;
                    }
                    
                     if ((k==lengthNums-2) && descendingCounter!=2)
                    {
                        descendingCounter=descendingCounter+1;
                    }
                    
                    ticker=ticker+"D"+"("+(descendingCounter)+")";
                    descendingChainsComplete++;
                    descendingCounter=0;
                }
            }
        }
        
        isStandalone=false;
        
        return ticker;
    }
    
    public static List<String> summaryRanges(float[] nums, int lengthNums) 
    {
        boolean isPrevNumAscending=false;
        final float epsilon = 0.0005f;
        boolean writtenPrevious=false;   
        boolean combineMerge=false;
        String potentialfurtherAscendingBeyondThisStart="";
        String potentialfurtherAscendingBeyondThisEnd="";
        
        boolean hasNotWrittenLastNumber=true;
        
        boolean isFirstOccurenceAscendingChain=false;
        boolean isFirstOccurenceAscendingChainNoTransition =false;
        
        List<String> sm = new ArrayList<>();
        int counter = 0;
        String start="";
        String end="";
        String temp="";
        String backupStart="";
        boolean hasTransition=false;
        String transitionNumber="";
        float difference=0.1f;

        if (nums.length==1)
        {
            start=String.valueOf(nums[0]);
            sm.add(start);
            System.out.println("1Writing Standalone: " + start);
            completeTicker(start, start,0,lengthNums);
            return sm;
        }

        for (int k=0; k<nums.length-1;k++)
        {
            if (k==0)
            {
                start=String.valueOf(nums[k]);
            }
            
            if (nums[k]!=nums[k+1])
            {
                System.out.println("\nCHECKING: " + nums[k] + " with " + nums[k+1]);
                //System.out.println("---------------------------VALS d: " + descendingCounter);
                //System.out.println("---------------------------VALS a: " + ascendingCounter);
                //System.out.println("currently in list: " + sm);
                
                 if (!potentialfurtherAscendingBeyondThisStart.equals("") 
                 && !(potentialfurtherAscendingBeyondThisEnd.equals("")) 
                 && nums[k+1]<=Float.valueOf(potentialfurtherAscendingBeyondThisStart))
                {   
                    if (potentialfurtherAscendingBeyondThisStart.equals(nums[k]))
                    {
                        System.out.println("Stored value also ascending and overlap, not storing");
                        System.out.println("NO storage required");
                        potentialfurtherAscendingBeyondThisStart="";
                        potentialfurtherAscendingBeyondThisEnd="";
                    }
                }
                
                if (Math.abs(nums[k] - (nums[k+1] + difference)) <epsilon)
                {
                    System.out.println("Descending sequence (difference)");
                    descendingCounter++;
                    
                    if (k!=0)
                    {
                        if ((Math.abs(nums[k] - (nums[k-1] + difference)) <epsilon))
                        {
                        transitionNumber=String.valueOf(nums[k]);
                        System.out.println("Transition number: " + transitionNumber + " descending(difference) on either side");
                        }
                    }
                    
                    if (counter==0)
                    {
                        backupStart=String.valueOf(nums[k]);
                    }
                    
                    if (counter==0 && (k==nums.length-2))
                    {
                        if(!(potentialfurtherAscendingBeyondThisStart=="") 
                        && !(potentialfurtherAscendingBeyondThisEnd=="") 
                        && isFirstOccurenceAscendingChain)
                        {
                            sm.add(potentialfurtherAscendingBeyondThisStart+"->"+nums[k]);
                            System.out.println("--------------------2322USING STORED TO WRITE RANGE");
                            System.out.println("9705Writing range: " + potentialfurtherAscendingBeyondThisStart + "-> " + nums[k]);
                            ascendingCounter++;
                            completeTicker(start,String. valueOf(nums[k]),k,lengthNums);
                            potentialfurtherAscendingBeyondThisStart="";
                            potentialfurtherAscendingBeyondThisEnd="";
                        }
                        
                        if (sm.isEmpty() && !isFirstOccurenceAscendingChain 
                        && !(potentialfurtherAscendingBeyondThisStart=="") 
                        && !(potentialfurtherAscendingBeyondThisEnd==""))
                        {
                            sm.add(potentialfurtherAscendingBeyondThisStart+"->"+nums[k]);
                            System.out.println("--------------------1980USING STORED TO WRITE RANGE");
                            System.out.println("43434Writing range: " + potentialfurtherAscendingBeyondThisStart + "-> " + potentialfurtherAscendingBeyondThisEnd);
                            potentialfurtherAscendingBeyondThisStart="";
                            potentialfurtherAscendingBeyondThisEnd="";
                        }
                        
                        start=String.valueOf(nums[k]);
                        end = String.valueOf(nums[k+1]);
                        sm.add(start+"->"+end);
                        System.out.println("5Writing range: " + start + "-> " + end);
                        descendingCounter++;
                        completeTicker(start,end,k,lengthNums);
                        isFirstOccurenceAscendingChain=false;
                        isFirstOccurenceAscendingChainNoTransition =false;
                        break;
                    }
                
                    if (counter!=0 && (k==nums.length-2))
                    {
                        end=String.valueOf(nums[k+1]);
                        sm.add(start +"->"+end);
                        System.out.println("6Writing range: " + start + "-> " + end);
                        descendingCounter++;
                        completeTicker(start,end,k,lengthNums);
                    }
                   
                    if (counter==0)
                    {
                        if (isFirstOccurenceAscendingChainNoTransition || isFirstOccurenceAscendingChain)
                        {
                            end=String.valueOf(nums[k]);
                            sm.add(start+"->"+end);
                            System.out.println("28Writing range: " + start + "-> " + end);
                            isFirstOccurenceAscendingChain=false;
                            isFirstOccurenceAscendingChainNoTransition =false;
                            ascendingCounter++;
                            completeTicker(start,end,k,lengthNums);
                            potentialfurtherAscendingBeyondThisEnd="";
                            potentialfurtherAscendingBeyondThisStart="";
                        }
                        else
                        {
                            if (String.valueOf(nums[k+1]).equals(potentialfurtherAscendingBeyondThisStart))
                            {
                                System.out.println("123456using stored start");
                                sm.add(potentialfurtherAscendingBeyondThisStart+"->"+potentialfurtherAscendingBeyondThisEnd);
                                System.out.println("197618Writing range: " + potentialfurtherAscendingBeyondThisStart+"->"+potentialfurtherAscendingBeyondThisEnd);
                                ascendingCounter++;
                                completeTicker(potentialfurtherAscendingBeyondThisStart,potentialfurtherAscendingBeyondThisEnd,k,lengthNums);
                                potentialfurtherAscendingBeyondThisStart="";
                                potentialfurtherAscendingBeyondThisEnd="";
                            }
                        }
                        
                        start=String.valueOf(nums[k]);
                        System.out.println("Establishing start: " + start);
                    
                        if (k==nums.length-1)
                        {
                            System.out.println("2Writing Standalone: " + start);
                            sm.add(start);
                            completeTicker(start, start,k,lengthNums);
                        }
                    }
                    counter++; 
                }  
                else
                {
                    if (k==nums.length-2)
                    {
                        System.out.println("k=nums.length-2");
                        
                        if (temp!="")
                        {
                            sm.add(temp);
                            System.out.println("9Writing range: " + temp);
                            isFirstOccurenceAscendingChain=false;
                            isFirstOccurenceAscendingChainNoTransition =false;
                        }
                        if (counter==0)
                        {    
                            if (Math.abs(nums[k] - (nums[k+1] + difference)) <epsilon)
                            {
                                System.out.println("next number descending (difference)");
                                start=String.valueOf(nums[k]);
                                end = String.valueOf(nums[k+1]);
                                sm.add(start+"->"+end);
                                System.out.println("7Writing range: " + start + "-> " + end);
                                isFirstOccurenceAscendingChain=false;
                                isFirstOccurenceAscendingChainNoTransition =false;
                            }
                            else
                            {
                                end = String.valueOf(nums[k]);
                            
                                if (isFirstOccurenceAscendingChainNoTransition || isFirstOccurenceAscendingChain)
                                {
                                    if (Math.abs(nums[k] - (nums[k+1] - difference)) <epsilon)
                                    {
                                        System.out.println("next number ascending (difference)");
                                        end=String.valueOf(nums[k+1]);
                                        sm.add(start+"->"+end);
                                        System.out.println("35Writing range: " + start + "-> " + end);
                                         ascendingCounter++;
                                         completeTicker(start,end,k,lengthNums);
                                        hasNotWrittenLastNumber=false;
                                        isFirstOccurenceAscendingChain=false;
                                        isFirstOccurenceAscendingChainNoTransition =false;
                                         ascendingCounter++;
                                    }
                                    else
                                    {
                                        end=String.valueOf(nums[k]);
                                        sm.add(start+"->"+end);
                                        System.out.println("27Writing range: " + start + "-> " + end); 
                                    }
                                }     
                                else 
                                {   
                                    if (temp=="")
                                    {
                                        if (nums.length==2)
                                        {
                                            if ((Math.abs(nums[k] - (nums[k+1] + difference)) <epsilon) 
                                            || (Math.abs(nums[k] - (nums[k+1] - difference)) <epsilon))
                                            {
                                                System.out.println("next number ascending(difference) AND/OR descending (difference)");
                                                start=String.valueOf(nums[k]);
                                                end=String.valueOf(nums[k+1]);
                                                sm.add(start+"->"+end);
                                                System.out.println("2678Writing range, only two ascending numbers in array: " + start + "-> " + end);
                                                break;
                                            }
                                            else
                                            {
                                                System.out.println("next number NOT within difference");
                                                start=String.valueOf(nums[k]);
                                                System.out.println("234Writing Standalone: " + start);
                                                completeTicker(start, start,k,lengthNums);
                                                sm.add(start);
                                                start=String.valueOf(nums[k+1]);
                                                sm.add(start);
                                                System.out.println("2348Writing Standalone: " + start);
                                                completeTicker(start, start,k,lengthNums);
                                                break;
                                            }
                                        }
                                        
                                        if (Math.abs(nums[k] - (nums[k-1] + difference)) <epsilon)
                                        {
                                            System.out.println("previous number descending (difference)");
                                            if (Math.abs(nums[k] - (nums[k+1] - difference)) <epsilon)
                                            {
                                                System.out.println("next number ascending (difference)");
                                                 ascendingCounter++;
                                                if (writtenPrevious)
                                                {
                                                    start=potentialfurtherAscendingBeyondThisStart;
                                                    
                                                    end=String.valueOf(nums[k+1]);
                                                    sm.add(start+"->"+end);
                                                    System.out.println("6098Writing range: " + start + "-> " + end);
                                                }
                                                else
                                                {
                                                    start=String.valueOf(nums[k-1]);
                                                    end=String.valueOf(nums[k+1]);
                                                    sm.add(start+"->"+end);
                                                    System.out.println("9876Writing range: " + start + "-> " + end);
                                    
                                                    potentialfurtherAscendingBeyondThisStart="";
                                                    potentialfurtherAscendingBeyondThisStart="";
                                                }
                                                
                                                writtenPrevious=false;
                                            }
                                            
                                            else
                                            {
                                                if (writtenPrevious)
                                                {
                                                    System.out.println("6111using stored start");
                                                    sm.add(potentialfurtherAscendingBeyondThisStart+"->"+potentialfurtherAscendingBeyondThisEnd);
                                                    System.out.println("197618Writing range: " + potentialfurtherAscendingBeyondThisStart+"->"+potentialfurtherAscendingBeyondThisEnd);
                                                    writtenPrevious=false;
                                                    potentialfurtherAscendingBeyondThisStart="";
                                                    potentialfurtherAscendingBeyondThisEnd="";
                                                }
                                                
                                                if (k==1 && nums.length>=3)
                                                {
                                                    start=String.valueOf(nums[k-1]);
                                                    end=String.valueOf(nums[k]);
                                                    sm.add(start+"->"+end);    
                                                
                                                    System.out.println("00000Writing range: " + start+"->"+end);
                                                }
                                                
                                                if (k+1==nums.length-1)
                                                {
                                                    start=String.valueOf(nums[k+1]);
                                                    sm.add(start);
                                                    System.out.println("0241Writing Standalone: " + start);
                                                    System.out.println("This should be last number");
                                                    completeTicker(start, start,k,lengthNums);
                                                    break;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            if (!(Math.abs(nums[k] - (nums[k+1] - difference)) <epsilon))
                                            {
                                                System.out.println("previous number not descending (difference)");
                                                System.out.println("next number ascending (difference)");
                                                start=String.valueOf(nums[k]);
                                                sm.add(start);
                                                System.out.println("009Writing Standalone: " + start);
                                            
                                                start=String.valueOf(nums[k+1]);
                                                sm.add(start);
                                                System.out.println("0089Writing Standalone: " + start);
                                                completeTicker(start, start,k,lengthNums);
                                            }
                                            else
                                            {
                                                System.out.println("previous number (not within difference), next number (difference)");
                                                
                                                if(!(potentialfurtherAscendingBeyondThisStart=="") 
                                                && !(potentialfurtherAscendingBeyondThisEnd=="") 
                                                && isFirstOccurenceAscendingChain)
                                                {
                                                    sm.add(potentialfurtherAscendingBeyondThisStart+"->"+potentialfurtherAscendingBeyondThisEnd);
                                                    System.out.println("--------------------2322USING STORED");
                                                    System.out.println("2025Writing range: " + potentialfurtherAscendingBeyondThisStart + "-> " + potentialfurtherAscendingBeyondThisEnd);
                                                }
                                                
                                                start=String.valueOf(nums[k]);
                                                end=String.valueOf(nums[k+1]);
                                                sm.add(start+"->"+end);
                                                System.out.println("1992Writing range: " + start + "-> " + end);
                                                ascendingCounter++;
                                                completeTicker(start,end,k,lengthNums);
                                                isFirstOccurenceAscendingChain=false;
                                                isFirstOccurenceAscendingChainNoTransition=false;
                                            }
                                        }
                                        combineMerge=true;
                                    }
                                }
                            
                                if (hasNotWrittenLastNumber && !combineMerge)
                                {
                                    start=String.valueOf(nums[k+1]);
                                    System.out.println("4Writing Standalone: " + start);
                                    sm.add(start);
                                    completeTicker(start, start,k,lengthNums);
                                    hasNotWrittenLastNumber=false;
                                }
                            }
                        }
                        else   
                        {
                            end=String.valueOf(nums[k]);
                            sm.add(start+"->"+end);
                            System.out.println("3Writing range: " + start + "-> " + end);
                            //descendingCounter++;
                            completeTicker(start,end,k,lengthNums);
                        
                            if ( (Math.abs(nums[k] - (nums[k+1] - difference)) <epsilon)   
                            ||   (Math.abs(nums[k] - (nums[k+1] + difference)) <epsilon))
                            {
                                System.out.println("ascending/descending next number (diffference)");
                                start=String.valueOf(nums[k]);
                                end=String.valueOf(nums[k+1]);
                                sm.add(start+"->"+end);
                                System.out.println("49Writing range: " + start + "-> " + end);
                                isFirstOccurenceAscendingChain=false;
                                isFirstOccurenceAscendingChainNoTransition =false;
                            }
                            else
                            {
                                System.out.println("Next number not within difference");
                                start=String.valueOf(nums[k+1]);
                                sm.add(start);
                                System.out.println("599Writing standalone: " + start);
                                completeTicker(start, start,k,lengthNums);
                            }
                        }
                    }
                    else
                    {
                        System.out.println("K!=nums.length-2");
                            
                        if (Math.abs(nums[k] - (nums[k+1] + difference)) <epsilon)
                        {
                             System.out.println("next number descending (difference)");
                            end=String.valueOf(nums[k+1]);
                        }
                        else
                        {
                            System.out.println("next number not descending (difference)");
                            end=String.valueOf(nums[k]);
                        }
                        
                        System.out.println("This is counter at the moment:  " + counter);
                        
                        if (counter==0)
                        {
                            if(k==0)
                            {
                                if (Math.abs(nums[k] - (nums[k+1] + difference)) <epsilon)
                                {
                                    System.out.println("next number descending (difference)");
                                    
                                    if (writtenPrevious)
                                    {
                                        System.out.println("7777using stored start");
                                        sm.add(potentialfurtherAscendingBeyondThisStart+"->"+end);
                                        System.out.println("197617Writing range: " + start+"->"+end);
                                        writtenPrevious=false;
                                        potentialfurtherAscendingBeyondThisStart="";
                                        potentialfurtherAscendingBeyondThisEnd="";
                                    }
                                
                                    start=String.valueOf(nums[k]);
                                    counter++;
                                }
                                else
                                {
                                    if (Math.abs(nums[k] - (nums[k+1] - difference)) <epsilon)
                                    {
                                        System.out.println("next number ascending (difference)");
                                        ascendingCounter++;
                                        start=String.valueOf(nums[k]);
                                        end=String.valueOf(nums[k+1]);
                                        
                                        potentialfurtherAscendingBeyondThisStart = start; 
                                        potentialfurtherAscendingBeyondThisEnd = end;
                                        System.out.println("--------------------------------------Stored start -> end: " + start + "->" + end);
                                        
                                        isFirstOccurenceAscendingChain=false;
                                        isFirstOccurenceAscendingChainNoTransition =false;
                                    }
                                    else
                                    {
                                        System.out.println("2next number NOT within difference");
                                        System.out.println("5Writing standalone: " + start);
                                        sm.add(start);
                                        completeTicker(start, start,k,lengthNums);
                                    }
                                }
                            }
                            else
                            {
                                System.out.println("COUNTER NOT EQUAL TO 0");
                                
                                if (Math.abs(nums[k] - (nums[k+1] + difference)) <epsilon)
                                {
                                    System.out.println("next number descending (difference)");
                                    if (temp=="")
                                    {
                                        if (Math.abs(nums[k] - (nums[k-1] + difference)) <epsilon)
                                        {
                                            System.out.println("previous number descending (difference)");
                                            backupStart=String.valueOf(nums[k-1]);
                                        }
                                        else
                                        {
                                            backupStart=String.valueOf(nums[k]);
                                        }
                                            
                                        temp=backupStart+"->"+end;
                                        hasTransition=false;
                                        System.out.println(" 1hasTransition set back to false");
                                    }
                                    else
                                    {
                                        end=String.valueOf(nums[k+1]);
                                        temp=backupStart+"->"+end;
                                        hasTransition=false;
                                        System.out.println(" 2hasTransition set back to false");
                                    }
                                        
                                    System.out.println("8Storing range: " + temp);
                                }
                                else
                                {
                                    System.out.println("next number not descending (difference)");
                                        
                                    if(temp!="")
                                    {
                                        sm.add(temp);
                                        System.out.println("8Writing range: " + temp);
                                        temp="";
                                        backupStart="";
                                        isFirstOccurenceAscendingChain=false;
                                        isFirstOccurenceAscendingChainNoTransition =false;
                                    }
                                    else
                                    {
                                        if ((Math.abs(nums[k] - (nums[k-1] + difference)) <epsilon) ||   
                                        (Math.abs(nums[k] - (nums[k+1] - difference)) <epsilon))
                                        {
                                            System.out.println("previous number descending(difference) AND/OR next number ascending (difference)");
                                            end = String.valueOf(nums[k]);
                                                
                                            if  (Math.abs(nums[k] - (nums[k+1] - difference))<epsilon)
                                            {
                                                System.out.println("Next number ascending");
                                                 ascendingCounter++;
                                                    
                                                if (!isFirstOccurenceAscendingChainNoTransition)
                                                {
                                                    start=String.valueOf(nums[k]);
                                                    
                                                    isFirstOccurenceAscendingChainNoTransition=true;
                                                    System.out.println("First occurrence three consecutive ascending numbers (difference)");
                                                }
                                                    
                                                if (isFirstOccurenceAscendingChainNoTransition 
                                                && potentialfurtherAscendingBeyondThisStart.equals("") 
                                                && potentialfurtherAscendingBeyondThisEnd.equals(""))
                                                {
                                                    start=String.valueOf(nums[k]);
                                                    end=String.valueOf(nums[k+1]);
                                        
                                                    potentialfurtherAscendingBeyondThisStart = start; 
                                                    potentialfurtherAscendingBeyondThisEnd = end;
                                                   
                                                    System.out.println("--------------------------------------22Stored start -> end: " + start + "->" + end);
                                                }
                                                    
                                                if ((Math.abs(nums[k] - (nums[k-1] + difference)) <epsilon) 
                                                &&   (Math.abs(nums[k] - (nums[k+1] - difference))<epsilon))
                                                {
                                                    System.out.println("Previous number descending (difference) AND next number ascending (difference)");
                                                        
                                                    if (!isFirstOccurenceAscendingChain)
                                                    {
                                                        start=String.valueOf(nums[k-1]);
                                                            
                                                        isFirstOccurenceAscendingChain=true;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                System.out.println("next item is NOT ascending(difference)");
                                                
                                                if (!potentialfurtherAscendingBeyondThisStart.equals("") 
                                                && !(potentialfurtherAscendingBeyondThisEnd.equals("")))
                                                {
                                                    System.out.println("using stored start");
                                                        sm.add(start+"->"+end);
                                                        System.out.println("197619Writing range: " + start+"->"+end);
                                                        ascendingCounter++;
                                                        completeTicker(start,end,k,lengthNums);
                                                }
                                                else
                                                {
                                                    sm.add(start+"->"+end);
                                                    System.out.println("1541Writing range: " + start+"->"+end);
                                                }
                                                    
                                                potentialfurtherAscendingBeyondThisEnd="";
                                                potentialfurtherAscendingBeyondThisStart="";
                                                    
                                                isFirstOccurenceAscendingChain=false;
                                                isFirstOccurenceAscendingChainNoTransition=false;
                                                isFirstOccurenceAscendingChain=false;
                                                isFirstOccurenceAscendingChainNoTransition =false;
                                            }
                                        }
                                        else  
                                        {
                                            System.out.println("previous number ascending (difference) OR next number descending(difference)");
                                            
                                            if (potentialfurtherAscendingBeyondThisStart!="" && potentialfurtherAscendingBeyondThisEnd!="")
                                            {
                                                System.out.println("using stored start");
                                                sm.add(potentialfurtherAscendingBeyondThisStart+"->"+potentialfurtherAscendingBeyondThisEnd);
                    System.out.println("888881Writing range: " +potentialfurtherAscendingBeyondThisStart+"->"+potentialfurtherAscendingBeyondThisEnd);
                                                potentialfurtherAscendingBeyondThisEnd="";
                                                potentialfurtherAscendingBeyondThisStart="";
                                            }
                                            else
                                            {
                                                start = String.valueOf(nums[k]);
                                                sm.add(start);
                                                System.out.println("6Writing Standalone: " + start);
                                                completeTicker(start, start,k,lengthNums);
                                                isFirstOccurenceAscendingChain=false;
                                                isFirstOccurenceAscendingChainNoTransition=false;
                                            }
                                        }
                                    }  
                                }
                            }
                        }
                        else                        
                        {
                            System.out.println("counter is not zero");                         
                                
                            if ((Math.abs(nums[k] - (nums[k-1] + difference)) <epsilon)  
                            && (Math.abs(nums[k] - (nums[k+1] + difference)) <epsilon))
                            {
                                System.out.println("next number descending (difference) AND previous number descending (difference)");
                                end=String.valueOf(nums[k]);
                                sm.add(backupStart+"->"+end);
                                System.out.println("10Writing range: " + backupStart+"->"+end);
                                hasTransition=true;
                                System.out.println(" 12hasTransition set to true");
                                transitionNumber=String.valueOf(nums[k]);
                                System.out.println("Transition number: " + transitionNumber + " descending(difference) on either side");
                                
                                isFirstOccurenceAscendingChain=false;
                                isFirstOccurenceAscendingChainNoTransition =false;
                            }
                            
                            if ((Math.abs(nums[k] - (nums[k-1] - difference)) <epsilon)  
                            && (Math.abs(nums[k] - (nums[k+1] - difference)) <epsilon))
                            {
                                transitionNumber=String.valueOf(nums[k]);
                                System.out.println("Transition number: " + transitionNumber + " ascending(difference) on either side");
                                System.out.println("next number ascending (difference) AND next number descending (difference");
                            }
                            
                            if (!hasTransition)
                            {
                                if (temp!="")
                                {
                                    System.out.println("TEMP!=blank");
                                    end=String.valueOf(nums[k+1]);
                                    sm.add(start+"->"+end);
                                }
                                else
                                {
                                    System.out.println("COUNTER VALUE: " + counter);
                                                     
                                    if ((Math.abs(nums[k] - (nums[k-1] - difference)) <epsilon) 
                                    && (Math.abs(nums[k] - (nums[k+1] - difference)) <epsilon))
                                    {
                                        System.out.println("previous number ascending (difference) AND next number ascending (difference)");
                                        System.out.println("3121Writing range: " + start + "-> " + end);
                                        sm.add(start+"->"+end);
                                        end=String.valueOf(nums[k+1]);
                                        start=String.valueOf(nums[k]);
                                        descendingCounter++;
                                        completeTicker(end,start,k,lengthNums);
                                        ascendingCounter++;
                                        
                                        potentialfurtherAscendingBeyondThisStart = start; 
                                        potentialfurtherAscendingBeyondThisEnd = end;
                                        System.out.println("--------------------------------------Stored start -> end: " + start + "->" + end);
                                            
                                        writtenPrevious=true;
                                     
                                        if (((nums.length-1)-(k+1))==1)
                                        {
                                            
                                        }
                                    }
                                    else
                                    {
                                        System.out.println("previous number AND/OR next number not ascending(difference)");
                                        System.out.println("2Writing range: " + start + "-> " + end);
                                    
                                        sm.add(start+"->"+end);
                                        completeTicker(start,end,k,lengthNums);
                                    }
                                    
                                    isFirstOccurenceAscendingChain=false;
                                    isFirstOccurenceAscendingChainNoTransition =false;
                                }
                            }
                            counter=0;
                            temp="";
                            backupStart="";
                            hasTransition=false;
                        }
                    }
                }
            }
            else
            {
                if (k==(nums.length-2))
                {
                    if ((Math.abs(nums[k] - (nums[k-1] - difference)) <epsilon) 
                    && potentialfurtherAscendingBeyondThisStart.equals("")  
                    && potentialfurtherAscendingBeyondThisEnd.equals(""))
                    {
                        System.out.println("Previous number ascending (difference)");
                        System.out.println("CURRENT START: " + start);
                        start=String.valueOf(nums[k-1]);
                        end=String.valueOf(nums[k]);
                                
                        System.out.println("9705Writing range: " + start + "-> " + end);
                        sm.add(start+"->"+end);
                        isPrevNumAscending=true;
                    }
                    
                    if (!potentialfurtherAscendingBeyondThisStart.equals("") 
                    && !(potentialfurtherAscendingBeyondThisEnd.equals("")))
                    {
                        sm.add(potentialfurtherAscendingBeyondThisStart+"->"+nums[k]);
                        System.out.println("--------------------23229USING STORED TO WRITE RANGE");
                        System.out.println("9705Writing range: " + potentialfurtherAscendingBeyondThisStart + "-> " + potentialfurtherAscendingBeyondThisEnd);
                        potentialfurtherAscendingBeyondThisStart="";
                        potentialfurtherAscendingBeyondThisEnd="";
                        System.out.println("CURRENT LIST: " + sm);
                    }
                    else
                    {
                        start = String.valueOf(nums[k]);
                        sm.add(start);
                        System.out.println("07774544Writing Standalone: " + start);
                        completeTicker(start, start,k,lengthNums);
                    }
                }
                
                if (!isPrevNumAscending)
                {
                    start = String.valueOf(nums[k]);
                    sm.add(start);
                    System.out.println("019238475Writing Standalone: " + start);
                    completeTicker(start, start,k,lengthNums);
                }
            }
            isPrevNumAscending=false;
        }
        System.out.println("\nTICKER: " + completeTicker("END","END",0,lengthNums));
        return sm;
    }
}