# Nで指定された桁に入り切らないケースは「1 ≤ si ≤ N」よりあり得ない
N, M = gets.split.map(&:to_i)
s, c = [], Array.new(N)

M.times do
  _s, _c = gets.split.map(&:to_i)
  s << _s

  # 同一桁に違う値が指定されている場合
  if c[_s - 1] && c[_s - 1] != _c
    puts -1

    exit
  end

  c[_s - 1] = _c
end

# 1桁目が0の場合はNG(ただし1桁の場合は0を許容する)
if N != 1 && s.find { |_s| _s == 1 && c[_s - 1].zero? }
  puts -1

  exit
end

puts c[0..(N - 1)].map.with_index { |_c, i| _c ? _c : (i.zero? ? 1 : 0) }.join
