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(c.head._1, -1)
    } else if (c.head._1 == 1 && c.head._2 == 0) {
      acc.updated(c.head._1, -1)
    } else {
      // 一つの桁について、指定されていた値が一つだけであれば、その桁と値のペアを Map に追加。
      acc.updated(c.head._1, c.head._2)
    }
  })

  val validatedMap = Range(1, n + 1).toList.foldLeft(Map[Int, Int]())((acc, c) => {
    acc.updated(c, checkedMap.getOrElse(c, 0))
  })

  if(validatedMap.values.toSeq.contains(-1)) {
    println(-1)
  } else {
    println(validatedMap.map(x => {
      if (x._1 == 1 && x._2 == 0) "1" else x._2.toString
    }).mkString(""))
  }
}