You have n distinct points on a plane, none of them lie on OY axis. Check that there is a point after removal of which the remaining points are located on one side of the OY axis.

Input

The first line contains a single positive integer n (2 ≤ n ≤ 105).

The following n lines contain coordinates of the points. The i-th of these lines contains two single integers xi and yi (|xi|, |yi| ≤ 109, xi ≠ 0). No two points coincide.

Output

Print "Yes" if there is such a point, "No" — otherwise.

You can print every letter in any case (upper or lower).

Examples

Input

3
1 1
-1 -1
2 -1


Output

Yes

Input

4
1 1
2 2
-1 1
-2 2


Output

No

Input

3
1 2
2 1
4 60


Output

Yes

Note

In the first example the second point can be removed.

In the second example there is no suitable for the condition point.

In the third example any point can be removed.
	/*
				@				 @			@	    @       @    
			   @ @				 @		   @ @       @     @
			  @	  @				 @		  @   @       @   @
			 @     @		     @	     @     @       @@@     
			@@@@@@@@@	@		 @      @@@@@@@@@       @
		   @         @   @      @      @		 @      @
		  @			  @	   @@@@		  @           @     @
	*/
import java.util.*;
import java.io.*;
import java.text.*;
import java.math.BigInteger;

public class Main{

    //SOLUTION BEGIN
    //Into the Hardware Mode
    void pre() throws Exception{}
	
    void solve(int TC) throws Exception {
		//Write your code here
		int n = ni();
        int pos=0,neg=0;
        while(n-->0){
        int x = ni(),y = ni();
        if(x>0)
        pos++;
        if(x<0)
        neg++;
        }
        if(pos>=2&&neg>=2)
        p("No");
        else
        p("Yes");
		
		/*
        TreeSet<Long> set = new TreeSet<>();
        int n = ni();
        for(int i = 0; i< n; i++){
            long x = (nl()%n+n)%n;
            set.add((x+i)%n);
        }
        pn(set.size() == n?"YES":"NO");
		*/
    }
    //SOLUTION END
	
    static void debug(Object...obj){System.err.println(Arrays.deepToString(obj)); }
    void hold(boolean b)throws Exception{if(!b)throw new Exception("Hold right there, Sparky!");}
    void exit(boolean b){if(!b)System.exit(0);}
    final long IINF = (long)2e18;    		//in scientific notation 2e18 is a floating point, so need to type_cast
    final int INF = (int)1e9+2, MX = (int)2e6+5;
    DecimalFormat df = new DecimalFormat("0.00000000000");
    double PI = 3.141592653589793238462643383279502884197169399, eps = 1e-8;
    static boolean multipleTC = false, memory = false, fileIO = false;
    FastReader in;PrintWriter out;
    void run() throws Exception{
        long ct = System.currentTimeMillis();
        if (fileIO) {
            in = new FastReader("");
            out = new PrintWriter("");
        } else {
            in = new FastReader();
            out = new PrintWriter(System.out);
        }
        
        int T = multipleTC? ni():1;            	//If multiple test cases are there in the problem
        pre();
        for (int t = 1; t <= T; t++) solve(t);   //for every test case 
        out.flush();
        out.close();
        System.err.println((System.currentTimeMillis() - ct));
    }
	//main function
    public static void main(String[] args) throws Exception{
        if(memory)new Thread(null, new Runnable() {public void run(){try{new Main().run();}catch(Exception e){e.printStackTrace();}}}, "1", 1 << 28).start();
        else new Main().run();
    }
	
    int[][] make(int n, int[] from, int[] to, int e, boolean f){
        int[][] g = new int[n][];int[]cnt = new int[n];
        for(int i = 0; i< e; i++){
            cnt[from[i]]++;
            if(f)cnt[to[i]]++;
        }
        for(int i = 0; i< n; i++)g[i] = new int[cnt[i]];
        for(int i = 0; i< e; i++){
            g[from[i]][--cnt[from[i]]] = to[i];
            if(f)g[to[i]][--cnt[to[i]]] = from[i];
        }
        return g;
    }
	
    int[][][] makeS(int n, int[] from, int[] to, boolean f){
        int[][][] g = new int[n][][];int[]cnt = new int[n];
        for(int i:from)cnt[i]++;if(f)for(int i:to)cnt[i]++;
        for(int i = 0; i< n; i++)g[i] = new int[cnt[i]][];
        for(int i = 0; i< from.length; i++){
            g[from[i]][--cnt[from[i]]] = new int[]{to[i], i};
            if(f)g[to[i]][--cnt[to[i]]] = new int[]{from[i], i};
        }
        return g;
    }
	
    int find(int[] set, int u){return set[u] = (set[u] == u?u:find(set, set[u]));}
    int digit(long s){int ans = 0;while(s>0){s/=10;ans++;}return ans;}		//Return number of digits in a number eg. s = 63452656 then ans = 8
    long gcd(long a, long b){return (b==0)?a:gcd(b,a%b);}
    int gcd(int a, int b){return (b==0)?a:gcd(b,a%b);}
    int bit(long n){return (n==0)?0:(1+bit(n&(n-1)));}    			
    void p(Object o){out.print(o);}
    void pn(Object o){out.println(o);}
    void pni(Object o){out.println(o);out.flush();}
    String n()throws Exception{return in.next();}	//next() can read the input only till the space. It can't read two words separated by space.
    String nln()throws Exception{return in.nextLine();}  //nextLine() reads input including space between the words
    int ni()throws Exception{return Integer.parseInt(in.next());}	//reads next integer
    long nl()throws Exception{return Long.parseLong(in.next());}	//reads next long
    double nd()throws Exception{return Double.parseDouble(in.next());}	//reads next double

    class FastReader{
        BufferedReader br;
        StringTokenizer st;
        public FastReader(){
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        public FastReader(String s) throws Exception{
            br = new BufferedReader(new FileReader(s));
        }

        String next() throws Exception{
            while (st == null || !st.hasMoreElements()){
                try{
                    st = new StringTokenizer(br.readLine());
                }catch (IOException  e){
                    throw new Exception(e.toString());
                }
            }
            return st.nextToken();
        }

        String nextLine() throws Exception{
            String str;
            try{
                str = br.readLine();
            }catch (IOException e){
                throw new Exception(e.toString());
            }
            return str;
        }
    }
}