/*
Online Java - IDE, Code Editor, Compiler

Online Java is a quick and easy tool that helps you to build, compile, test your programs online.
*/
import java.util.ArrayList;


public class Main
{
    public static void main(String[] args) {
        System.out.println("Welcome to Online IDE!! Happy Coding :)");
        
        int[] nums = new int[]{1,1,1,0};
        boolean moveForward=true;
        String numbers = java.util.Arrays.toString(nums);
        System.out.println(numbers+"\n");
        boolean [] outcome = new boolean[nums.length];
        int falseCount=0;
        
        for (int i=0; i<nums.length; i++)
        {
            moveForward=true;
            
            if(i!=nums.length)
            {
                if (i==nums.length-1)
                {
                    if (nums[i]==0)
                    {
                        System.out.println("Index: " + (i) + ". No movement forward - 0 value");
                        System.out.println("FALSE");
                        System.exit(0);
                        
                    }
                }
                
                if (i!=nums.length-1)
                {
                 if (nums[i]==1 && nums[i+1]>0)
                 {
                     System.out.println("Index: " + i + " moved forward to index: "+ (i+1));
                     outcome[i]=true;
                 }
                
                 
                 if (nums[i]==1 && nums[i+1]==0 && i+1!=nums.length-1)
                 {
                     System.out.println("Index1: " + i + " failed to move forward.");
                        moveForward=false;
                        outcome[i]=false;
                        //break;
                 }
                }
                 
                 if (nums[i]==0 && i!=nums.length-1)
                 {
                     System.out.println("Index2: " + i + " failed to move forward.");
                        moveForward=false;
                        outcome[i]=false;
                        //break;
                 }
                 
                 if (nums[i]!=0 && i==nums.length-1)
                 {
                     System.out.println("Index2: " + i + " incorrect last index value. Should be 0.");
                        moveForward=false;
                        outcome[i]=false;
                        //break;
                 }
                 
                 
                for (int j=1;j<nums[i];j++)
                {
                    if (nums[i+j]>0)
                    {
                        System.out.println("Index3: " + i + " failed to move forward.");
                        moveForward=false;
                        outcome[i]=false;
                        //break;
                    }
                    
                    if (nums[i+j]==0)
                    {
                        System.out.println("Index: " + i + " moved forward to index: "+ (i+nums[i]));
                        outcome[i]=true;
                        
                        System.out.println("Index: " + (i+j) + ". No movement forward - 0 value");
                        
                        
                    }
                    
                }
            
            if (nums[nums.length-1]==0)
            {
                if (nums[i+nums[i]]==0 && i+nums[i]==nums.length-1)  // This works fine. It reaches end
            // on two scenarios. Where the last element has a 0 value. It also ensures
            {
                if(moveForward)
                {
                System.out.println("Index: " + i + ". This will reach end. Value 0 detected at end");
                outcome[i]=true;
                }
            }
            }
            
        }
    }
    
    for (boolean b: outcome)
    {
        if (!b)
        {
            System.out.println("FALSE");
            System.exit(0);
            falseCount++;
            
        }
        
        if (falseCount==0)
        {
            System.out.println("TRUE");
            break;
            
        }
            
        
        
    }
}
}