/*
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[]{0,0,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++)
        {
            if (nums[i]>nums.length)
            {
                System.out.println("Index: " + i + " value: " + nums[i]+ " is greater than list size: " + nums.length);
                falseCount++;
                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");
                
                    }
                }
            
                if (i!=nums.length-1)
                {
                    if (nums[i]==0)
                    {
                        System.out.println("Index: " + (i) + ". No movement forward - 0 value");
                    
                        if (i==0)
                        {
                            falseCount++;
                        }
                    }
                }
            
                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("Index: " + i + " failed to move forward.");
                        moveForward=false;
                        outcome[i]=false;
                    }
                }
            
                if (nums[i]!=0 && i==nums.length-1)
                {
                    System.out.println("Index: " + i + " incorrect last index value. Should be 0.");
                    falseCount++;
                    moveForward=false;
                    outcome[i]=false;
                }
            
                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;
                        falseCount++;
                    
                        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)
                        {
                            if(moveForward)
                            {
                                System.out.println("Index: " + i + ". This will reach end. Value 0 detected at end");
                                outcome[i]=true;
                            }
                        }
                    }
                }
            }
        
            for (boolean b: outcome)
            {
                if (falseCount==0)
                {
                    System.out.println("TRUE");
                    break;
                }
            
                if (!b)
                {
                    System.out.println("FALSE");
                    System.exit(0);
                    falseCount++;
                }
            }
        }
    }
}