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.lang.*;
import java.io.*;

public class Solution {

	public static void main (String[] args) throws java.lang.Exception {
		FastIO2 in = new FastIO2();
		int n= in.ni();
        int pos =0 ;
        int neg = 0;
        for(int i=0;i<n;i++){
            int x = in.ni();
            int y = in.ni();
            if(x>0){
                pos++;
            }
            else{
                neg++;
            }
        }
        if((pos>=1&&neg<=1)||(pos<=1&&neg>=1)){
            System.out.println("Yes");
        }
        else{
            System.out.println("No");
        }
	}
	
	static class FastIO2 {

        private final BufferedReader br;
        private String s[];
        private int index;

        public FastIO2() throws IOException {
            br = new BufferedReader(new InputStreamReader(System.in));
            s = br.readLine().split(" ");
            index = 0;
        }

        public int ni() throws IOException {
            return Integer.parseInt(nextToken());
        }

        public double nd() throws IOException {
            return Double.parseDouble(nextToken());
        }

        public long nl() throws IOException {
            return Long.parseLong(nextToken());
        }

        public String next() throws IOException {
            return nextToken();
        }

        public String nli() throws IOException {
            return br.readLine();
        }

        public int[] gia(int n) throws IOException {
            int a[] = new int[n];
            for (int i = 0; i < n; i++) {
                a[i] = ni();
            }
            return a;
        }

        public int[] gia(int n, int start, int end) throws IOException {
            validate(n, start, end);
            int a[] = new int[n];
            for (int i = start; i < end; i++) {
                a[i] = ni();
            }
            return a;
        }

        public double[] gda(int n) throws IOException {
            double a[] = new double[n];
            for (int i = 0; i < n; i++) {
                a[i] = nd();
            }
            return a;
        }

        public double[] gda(int n, int start, int end) throws IOException {
            validate(n, start, end);
            double a[] = new double[n];
            for (int i = start; i < end; i++) {
                a[i] = nd();
            }
            return a;
        }

        public long[] gla(int n) throws IOException {
            long a[] = new long[n];
            for (int i = 0; i < n; i++) {
                a[i] = ni();
            }
            return a;
        }

        public long[] gla(int n, int start, int end) throws IOException {
            validate(n, start, end);
            long a[] = new long[n];
            for (int i = start; i < end; i++) {
                a[i] = ni();
            }
            return a;
        }

        private String nextToken() throws IndexOutOfBoundsException, IOException {
            if (index == s.length) {
                s = br.readLine().split(" ");
                index = 0;
            }
            return s[index++];
        }

        private void validate(int n, int start, int end) {
            if (start < 0 || end >= n) {
                throw new IllegalArgumentException();
            }
        }
    }
}
// class Solution {

//  public static void main (String[] args) throws java.lang.Exception {
//         FastIO2 in = new FastIO2();
//         int a = in.ni();
//         int b = in.ni();
//         int c = in.ni();
//         int mod = a%b;
//         for(int i=1;i<=1000000;i++){
//             if(10*mod/b==c){
//                 System.out.println(i);
//                 return;
//             }
//             else{
//                 mod = (10*mod)%b;
//             }
//         }
//         System.out.println(-1);
//  }
    
//  static class FastIO2 {

//         private final BufferedReader br;
//         private String s[];
//         private int index;

//         public FastIO2() throws IOException {
//             br = new BufferedReader(new InputStreamReader(System.in));
//             s = br.readLine().split(" ");
//             index = 0;
//         }

//         public int ni() throws IOException {
//             return Integer.parseInt(nextToken());
//         }

//         public double nd() throws IOException {
//             return Double.parseDouble(nextToken());
//         }

//         public long nl() throws IOException {
//             return Long.parseLong(nextToken());
//         }

//         public String next() throws IOException {
//             return nextToken();
//         }

//         public String nli() throws IOException {
//             return br.readLine();
//         }

//         public int[] gia(int n) throws IOException {
//             int a[] = new int[n];
//             for (int i = 0; i < n; i++) {
//                 a[i] = ni();
//             }
//             return a;
//         }

//         public int[] gia(int n, int start, int end) throws IOException {
//             validate(n, start, end);
//             int a[] = new int[n];
//             for (int i = start; i < end; i++) {
//                 a[i] = ni();
//             }
//             return a;
//         }

//         public double[] gda(int n) throws IOException {
//             double a[] = new double[n];
//             for (int i = 0; i < n; i++) {
//                 a[i] = nd();
//             }
//             return a;
//         }

//         public double[] gda(int n, int start, int end) throws IOException {
//             validate(n, start, end);
//             double a[] = new double[n];
//             for (int i = start; i < end; i++) {
//                 a[i] = nd();
//             }
//             return a;
//         }

//         public long[] gla(int n) throws IOException {
//             long a[] = new long[n];
//             for (int i = 0; i < n; i++) {
//                 a[i] = ni();
//             }
//             return a;
//         }

//         public long[] gla(int n, int start, int end) throws IOException {
//             validate(n, start, end);
//             long a[] = new long[n];
//             for (int i = start; i < end; i++) {
//                 a[i] = ni();
//             }
//             return a;
//         }

//         private String nextToken() throws IndexOutOfBoundsException, IOException {
//             if (index == s.length) {
//                 s = br.readLine().split(" ");
//                 index = 0;
//             }
//             return s[index++];
//         }

//         private void validate(int n, int start, int end) {
//             if (start < 0 || end >= n) {
//                 throw new IllegalArgumentException();
//             }
//         }
//     }
// }
// class Solution {

//  public static void main (String[] args) throws java.lang.Exception {
//         FastIO2 in = new FastIO2();

//  }
    
//  static class FastIO2 {

//         private final BufferedReader br;
//         private String s[];
//         private int index;

//         public FastIO2() throws IOException {
//             br = new BufferedReader(new InputStreamReader(System.in));
//             s = br.readLine().split(" ");
//             index = 0;
//         }

//         public int ni() throws IOException {
//             return Integer.parseInt(nextToken());
//         }

//         public double nd() throws IOException {
//             return Double.parseDouble(nextToken());
//         }

//         public long nl() throws IOException {
//             return Long.parseLong(nextToken());
//         }

//         public String next() throws IOException {
//             return nextToken();
//         }

//         public String nli() throws IOException {
//             return br.readLine();
//         }

//         public int[] gia(int n) throws IOException {
//             int a[] = new int[n];
//             for (int i = 0; i < n; i++) {
//                 a[i] = ni();
//             }
//             return a;
//         }

//         public int[] gia(int n, int start, int end) throws IOException {
//             validate(n, start, end);
//             int a[] = new int[n];
//             for (int i = start; i < end; i++) {
//                 a[i] = ni();
//             }
//             return a;
//         }

//         public double[] gda(int n) throws IOException {
//             double a[] = new double[n];
//             for (int i = 0; i < n; i++) {
//                 a[i] = nd();
//             }
//             return a;
//         }

//         public double[] gda(int n, int start, int end) throws IOException {
//             validate(n, start, end);
//             double a[] = new double[n];
//             for (int i = start; i < end; i++) {
//                 a[i] = nd();
//             }
//             return a;
//         }

//         public long[] gla(int n) throws IOException {
//             long a[] = new long[n];
//             for (int i = 0; i < n; i++) {
//                 a[i] = ni();
//             }
//             return a;
//         }

//         public long[] gla(int n, int start, int end) throws IOException {
//             validate(n, start, end);
//             long a[] = new long[n];
//             for (int i = start; i < end; i++) {
//                 a[i] = ni();
//             }
//             return a;
//         }

//         private String nextToken() throws IndexOutOfBoundsException, IOException {
//             if (index == s.length) {
//                 s = br.readLine().split(" ");
//                 index = 0;
//             }
//             return s[index++];
//         }

//         private void validate(int n, int start, int end) {
//             if (start < 0 || end >= n) {
//                 throw new IllegalArgumentException();
//             }
//         }
//     }
// }