local r = require("robot")
local comp = require("component")
local r_comp = comp.robot
local arg_tabel = {...}
local amount = arg_tabel[1]
 
local layout = {
  {3,3,3,
  3,3,3,
  3,3,3},

  {3,3,3,
  3,2,3,
  3,3,3},

  {3,3,3,
  3,3,3,
  3,3,3}
}

local dropSlot = 1
local dimensions = #layout

local function buildLayer(layer,layerNr)
  for i = 1, #layer do
    r.select(layer[i])
    r.placeDown()
    r.forward() 

    if i % dimensions == 0 and i ~= dimensions^2 then
      if i % (dimensions*2)== 0 then
        r.turnLeft()
      else
        r.turnRight()
      end
      r.forward()
      if i % (dimensions*2) == 0 then
        r.turnLeft()
      else
        r.turnRight()
      end
      r.forward()
    end
  end
end   

for x = 1, amount do
  r.turnRight()
  r.forward()
  r.forward()
  r.turnLeft()
  if r.suck(1) == false
    then break end
  r.turnRight()
  r.forward()
  r.turnLeft()
  if r.suck(1) == false
    then break end
  r.turnRight()
  r.forward()
  r.turnLeft()  
  if r.suck(26) == false
    then break end

  r.turnAround()

  r.forward()
  r.forward()
  r.forward()
  r.forward()
  r.turnRight()
  r.forward()
  r.forward()
  r.up()
  
  for i = 1,dimensions do
    buildLayer(layout[i],i)
    r.turnAround()
    r.up()
    r.forward() 
  end 
 
  r.down()
  r.back()
  r.back()  
  r.down()
  r.down()
  r.down()
  r.select(dropSlot)
  r.drop()

  r.turnLeft()
  r.forward()
  r.forward()
  r.turnRight()
  r.forward()
  r.forward()
  r.turnLeft()
  
  os.sleep(7.5) 
end