object Main extends App {
  val sc = new java.util.Scanner(System.in)
  val n: Int = sc.nextInt
  val m: Int = sc.nextInt()
  val list: List[(Int, Int)] = List.fill(m)(sc.nextInt, sc.nextInt())

  val checkedMap = list.groupBy(_._1).values.foldLeft(Map[Int, Int]())((acc ,c) => {
    if (c.count(_ != c.head) != 0) {
      // 一つの桁について、複数の値が指定されていた場合は -1 を追加。
      acc.updated(-1, -1)
    } else {
      // 一つの桁について、指定されていた値が一つだけであれば、その桁と値のペアを Map に追加。
      acc.updated(c.head._1, c.head._2)
    }
  })
  if ((checkedMap.getOrElse(checkedMap.keys.max, 0) == 0 && n != 1) || checkedMap.contains(-1)) {
    println(-1)
  } else {
    val x = for {
      x <- 1 to n
      ansList = checkedMap.getOrElse(x, 0)
    } yield ansList
    println(x.toList.map(_.toString).mkString(""))
  }
}
