#include<bits/stdc++.h>
using namespace std;
const int MaxN=2e5;
const int MaxA=1e9;
struct NODE{
int x, y, d;
NODE(int x=0,int y=0,int d=0):x(x),y(y),d(d){}
bool operator<(const NODE rhs)const{
return (y!=rhs.y)? y<rhs.y: x<rhs.x; }
} node[MaxN];
int func(int s,int e){
int n;
for(n=s; n<e && node[n].d==0; n+=1);
if( n==e ) // 全部向左
return 0;
for(n+=1; n<e && node[n].d; n+=1);
return n<e;
}
int main(){
int N;
string S;
cin>>N;
for(int n=0; n<N; n+=1)
cin>>node[n].x>>node[n].y;
cin>>S;
for(int n=0; n<N; n+=1)
node[n].d= S[n]=='R';
sort(node,node+N);
for(int e,s=0; s<N; s=e){
for(e=s+1; e<N && node[s].y==node[e].y; e++);
// 檢查範圍內的點(Y座標相同)
if( func(s,e) ){
cout<<"Yes";
return 0;
}
}
cout<<"No";
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNYXhOPTJlNTsKY29uc3QgaW50IE1heEE9MWU5OwpzdHJ1Y3QgTk9ERXsKCWludCB4LCB5LCBkOwoJTk9ERShpbnQgeD0wLGludCB5PTAsaW50IGQ9MCk6eCh4KSx5KHkpLGQoZCl7fQoJYm9vbCBvcGVyYXRvcjwoY29uc3QgTk9ERSByaHMpY29uc3R7CgkJcmV0dXJuICh5IT1yaHMueSk/IHk8cmhzLnk6IHg8cmhzLng7IH0KfSBub2RlW01heE5dOwoKaW50IGZ1bmMoaW50IHMsaW50IGUpewoJaW50IG47Cglmb3Iobj1zOyBuPGUgJiYgbm9kZVtuXS5kPT0wOyBuKz0xKTsKCWlmKCBuPT1lICkgLy8g5YWo6YOo5ZCR5bemCgkJcmV0dXJuIDA7Cglmb3Iobis9MTsgbjxlICYmIG5vZGVbbl0uZDsgbis9MSk7CglyZXR1cm4gbjxlOwp9CgppbnQgbWFpbigpewoJaW50IE47CglzdHJpbmcgUzsKCQoJY2luPj5OOwoJZm9yKGludCBuPTA7IG48Tjsgbis9MSkKCQljaW4+Pm5vZGVbbl0ueD4+bm9kZVtuXS55OwoJY2luPj5TOwoJZm9yKGludCBuPTA7IG48Tjsgbis9MSkKCQlub2RlW25dLmQ9IFNbbl09PSdSJzsKCQkKCXNvcnQobm9kZSxub2RlK04pOwoJZm9yKGludCBlLHM9MDsgczxOOyBzPWUpewoJCWZvcihlPXMrMTsgZTxOICYmIG5vZGVbc10ueT09bm9kZVtlXS55OyBlKyspOwoJCS8vIOaqouafpeevhOWcjeWFp+eahOm7nihZ5bqn5qiZ55u45ZCMKQoJCWlmKCBmdW5jKHMsZSkgKXsKCQkJY291dDw8IlllcyI7CgkJCXJldHVybiAwOwoJCX0KCX0KCWNvdXQ8PCJObyI7Cn0KCg==