N=Struct.new:l
G=->c{n=[]
c.map{|m|m<1?n<<N.new([]):m<2?(w=N.new([])
n.map{|x|x.l<<w;w.l<<x}
n<<w):(n-=r=n.select{|x|x.l.size%m<1}
n.map{|x|x.l-=r})}
n.size}
#--------------------------------------------------
require "minitest/autorun"
class TestGraph < MiniTest::Unit::TestCase
def test_empty
assert_equal 0, result([])
end
def test_1
assert_equal 4, result([0,1,0,1,0,1,3])
end
def test_2
assert_equal 0, result([5])
end
def test_3
assert_equal 0, result([0, 0, 0, 11])
end
def test_4
assert_equal 6, result([0,0,0,1,1,1])
end
def test_5
assert_equal 6, result([0,0,1,1,0,0,1,1,2,5,7,0,1])
end
def test_6
assert_equal 6, result([0,0,1,1,1,1,5,1,4,3,1,0,0,0,1,2])
end
def test_7
assert_equal 8, result([0,0,1,1,0,0,1,1,5,2,3,0,0,1,1,0,0,1,1,3,4,0,0,1,1,2,1,1])
end
def test_8
assert_equal 14, result([0,0,1,1,0,0,1,1,2,5,7,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,8])
end
def result(commands)
G[commands]
end
end
Tj1TdHJ1Y3QubmV3OmwKRz0tPmN7bj1bXQpjLm1hcHt8bXxtPDE/bjw8Ti5uZXcoW10pOm08Mj8odz1OLm5ldyhbXSkKbi5tYXB7fHh8eC5sPDx3O3cubDw8eH0Kbjw8dyk6KG4tPXI9bi5zZWxlY3R7fHh8eC5sLnNpemUlbTwxfQpuLm1hcHt8eHx4LmwtPXJ9KX0Kbi5zaXplfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpyZXF1aXJlICJtaW5pdGVzdC9hdXRvcnVuIgoKY2xhc3MgVGVzdEdyYXBoIDwgTWluaVRlc3Q6OlVuaXQ6OlRlc3RDYXNlCiAgZGVmIHRlc3RfZW1wdHkKICAgIGFzc2VydF9lcXVhbCAwLCByZXN1bHQoW10pCiAgZW5kCiAgZGVmIHRlc3RfMQogICAgYXNzZXJ0X2VxdWFsIDQsIHJlc3VsdChbMCwxLDAsMSwwLDEsM10pCiAgZW5kCiAgZGVmIHRlc3RfMgogICAgYXNzZXJ0X2VxdWFsIDAsIHJlc3VsdChbNV0pCiAgZW5kCiAgZGVmIHRlc3RfMwogICAgYXNzZXJ0X2VxdWFsIDAsIHJlc3VsdChbMCwgMCwgMCwgMTFdKQogIGVuZAogIGRlZiB0ZXN0XzQKICAgIGFzc2VydF9lcXVhbCA2LCByZXN1bHQoWzAsMCwwLDEsMSwxXSkKICBlbmQKICBkZWYgdGVzdF81CiAgICBhc3NlcnRfZXF1YWwgNiwgcmVzdWx0KFswLDAsMSwxLDAsMCwxLDEsMiw1LDcsMCwxXSkKICBlbmQKICBkZWYgdGVzdF82CiAgICBhc3NlcnRfZXF1YWwgNiwgcmVzdWx0KFswLDAsMSwxLDEsMSw1LDEsNCwzLDEsMCwwLDAsMSwyXSkKICBlbmQKICBkZWYgdGVzdF83CiAgICBhc3NlcnRfZXF1YWwgOCwgcmVzdWx0KFswLDAsMSwxLDAsMCwxLDEsNSwyLDMsMCwwLDEsMSwwLDAsMSwxLDMsNCwwLDAsMSwxLDIsMSwxXSkKICBlbmQKICBkZWYgdGVzdF84CiAgICBhc3NlcnRfZXF1YWwgMTQsIHJlc3VsdChbMCwwLDEsMSwwLDAsMSwxLDIsNSw3LDAsMSwxLDEsMSwxLDAsMSwxLDEsMSwxLDEsMSwxLDhdKQogIGVuZAoKICBkZWYgcmVzdWx0KGNvbW1hbmRzKQogICAgR1tjb21tYW5kc10KICBlbmQKZW5k