public class CentredHexagonalNumber
{
    static int m=1;
    static int n=1;
    
    public static void main (String [] args)
    {
        System.out.println("HELLO");
        
        //hexagonal(1352737);
        //hexagonal(2147483647);
        hexagonal(10228687);
        
    }
    
    public static void hexagonal(long num)
    {
        long total=0;
        long finalTotal=0;
        long counter=0;
        String beads="";
        String disector="";
        
        do
        {
            finalTotal=0;
            
            //System.out.println("\nThis is disector: " + m);
            //System.out.println("number rows: " + n);
            
             for (int p=0; p<m; p++)
                {
                    disector = disector + "0 ";
                }
            
            
            String [] row = new String [m-n];
            
            if (m==1)
            {
                disector = "0";
            }
            
            row = new String [m-n];
            
            for (int i=1;i<=(m-n);i++)
            {
                
                beads="";
                
                //System.out.println("BEADS IN ROW " + i + "  :" + (m-i));
                total = total + (m-i);
                counter++;
                
                //number spaces at front will be governed by i
                for (int k=0; k<i;k++)
                {
                    beads = beads + " ";
                }
                
                
                for (int j=0; j<(m-i);j++)
                {
                    beads = beads + "O ";
                }
                
                //System.out.println(beads +  "   to be added to row : " + (i-1));
                row[i-1]=beads;
            }
            
            finalTotal = (2*total) + m;
            
            System.out.println("This is the final total: " + finalTotal);
            
            m=m+2;
            n++;
            total=0;
            
            counter=0;
            
            beads="";
            
        
             if (finalTotal==num)
        {
            System.out.println("The number: " + num + " is a central hexagonal number: " + finalTotal);
        
            
            
            for (int i=(row.length-1); i>=0; i--)
            {
                //top half... its opposite order to that stored
                System.out.println(row[i]);
            }
            
            System.out.println(disector);
            
            for (int i=0; i<row.length; i++)
            {
                System.out.println(row[i]);
            }
            
        }
        
            
            disector = "";
            
            
        }while (finalTotal<num);
        
       
            if (finalTotal>num)
            {
                System.out.println("The number: " + num + " is NOT a central hexagonal number: " + finalTotal);
            }
    }
}