n,m = gets.split.map(&:to_i) vflg = n.times.map { false } eflg = m.times.map { false } adj = n.times.map { [] } m.times { |i| a, b = gets.split.map(&:to_i) adj[a] << [i, b] adj[b] << [i, a] } cnt = 0 n.times { |v| adj[v].each { |e, _| cnt += 1 unless eflg[e] eflg[e] = true } vflg[v] = true break if cnt == m } (n-1).downto(0) { |v| next unless vflg[v] vflg[v] = false if adj[v].all? { |_, u| vflg[u] } } puts vflg.reverse.drop_while { |i| !i }.map { |i| i ? '1' : '0' }.join