#include<iostream>#include<algorithm>usingnamespace std;constint N =100010;int n;structRange{int l, r;booloperator<(const Range &W)const{return l < W.l;}} range[N];intmain(){int st, ed;scanf("%d%d",&st,&ed);scanf("%d",&n);for(int i =0; i < n; i++){int l, r;scanf("%d%d",&l,&r);
range[i]={l, r};}sort(range, range + n);int res =0;bool success =false;for(int i =0; i < n; i++){int j = i, r =-2e9;while(j < n && range[j].l <= st){
r =max(r, range[j].r);
j++;}if(r < st){
res =-1;break;}
res++;if(r >= ed){
success =true;break;}
st = r;
i = j -1;}if(!success) res =-1;printf("%d\n", res);return0;}