void main(){
	char[] ans;
	int n, m;
	readf("%d %d\n", &n, &m);
	// ans文字列をゼロ埋め
	foreach(i; 0..n) ans ~= '0';
	// 文字挿入
	foreach(i; 0..m){
		int s;
		char c;
		readf("%d %c\n", &s, &c);
		ans[s-1] = c;
	}
	writeln(ans[0]=='0'?"-1": ans);
}

import std.stdio, std.conv, std.algorithm, std.numeric, std.string, std.math;

// 1要素のみの入力
T _scan(T= int)(){
	return to!(T)( readln().chomp() );
}

// 1行に同一型の複数入力
T[] _scanln(T = int)(){
	T[] ln;
	foreach(string elm; readln().chomp().split()){
		ln ~= elm.to!T();
	}
	return ln;
}
