Problem: Little Petya loves playing with squares. Mum bought him a square 2n × 2n in size. Petya marked a cell inside the square and now he is solving the following task.

The task is to draw a broken line that would go along the grid lines and that would cut the square into two equal parts. The cutting line should not have any common points with the marked cell and the resulting two parts should be equal up to rotation.

Petya wants to determine whether it is possible to cut the square in the required manner given the sizes of the square side and the coordinates of the marked cell. Help him.

Input

The first line contains three space-separated integers 2n, x and y (2 ≤ 2n ≤ 100, 1 ≤ x, y ≤ 2n), representing the length of a square's side and the coordinates of the marked cell. It is guaranteed that 2n is even.

The coordinates of the marked cell are represented by a pair of numbers x y, where x represents the number of the row and y represents the number of the column. The rows and columns are numbered by consecutive integers from 1 to 2n. The rows are numbered from top to bottom and the columns are numbered from the left to the right.

Output

If the square is possible to cut, print "YES", otherwise print "NO" (without the quotes).

Examples

Input

4 1 1


Output

YES


Input

2 2 2


Output

NO

Note

A sample test from the statement and one of the possible ways of cutting the square are shown in the picture: 

<image>

Solution (in JAVA):

Solution:
import java.io.*;
import java.util.*;
import java.math.*;
import static java.lang.Math.*;

public class Main implements Runnable {

    StreamTokenizer in;
    BufferedReader reader;
    PrintWriter out;
    StringTokenizer tok;
    boolean timus = System.getProperty("ONLINE_JUDGE")!=null;
    boolean codeforces =true;
    final double eps = 1e-9;
    
    public static void main(String[] args) throws Exception {
        new Thread(new Main()).start();
    }
    
    @Override
    public void run() {
        try {
            if (codeforces) {
                reader = new BufferedReader(new InputStreamReader(System.in));
                in = new StreamTokenizer(reader);
                out= new PrintWriter (new OutputStreamWriter(System.out));
                tok = new StringTokenizer("");
                solve();
                out.flush();
            } else
            if (!timus) {
                long begMem = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
                long t1 = System.currentTimeMillis();
                reader = new BufferedReader(new InputStreamReader(System.in));
                in = new StreamTokenizer(reader);
                out= new PrintWriter (new OutputStreamWriter(System.out));
                tok = new StringTokenizer("");
                solve();
                long endMem = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
                out.flush();
                long t2 = System.currentTimeMillis();
                System.out.println("Time:"+(t2-t1));
                System.out.println("Memory:"+(endMem-begMem));
                System.out.println("Total memory: " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()));
            } else {
                reader = new BufferedReader(new FileReader("input.txt"));
                in = new StreamTokenizer(reader);
                out= new PrintWriter (new FileWriter("output.txt"));
                tok = new StringTokenizer("");
                solve();
                out.flush();
                out.close();
            }
        }
        catch (Exception ex) {
            System.out.println("fail");
            System.exit(1);
        }
    }
    
    public class Chess {
        String coord;
        
        public Chess(String s){
            this.coord=s;
        }
        
        public int toInteger(char s) {
            if (s=='a'||s=='A') return 1;
            else if (s=='b'||s=='B') return 2;
            else if (s=='c'||s=='C') return 3;
            else if (s=='d'||s=='D') return 4;
            else if (s=='e'||s=='E') return 5;
            else if (s=='f'||s=='F') return 6;
            else if (s=='g'||s=='G') return 7;
            else if (s=='h'||s=='H') return 8;
            else return -1;
        }
        
        public String toString(int s) {
            if (s==1) return "a";
            else if (s==2) return "b";
            else if (s==3) return "c";
            else if (s==4) return "d";
            else if (s==5) return "e";
            else if (s==6) return "f";
            else if (s==7) return "g";
            else if (s==8) return "h";
            else return "0";
        }
        
        public pair getPair() {
            String j="";
            j+=coord.charAt(1);
            pair p = new pair(toInteger(coord.charAt(0)),Integer.parseInt(j));
            if (p.x!=-1)
            return p; else
                return new pair(0,0);
        }
        
        public String returnPair(pair p) {
            return toString(p.x)+p.y;
        }
    }
    
    public int nextInt() throws Exception {
        in.nextToken();
        return (int) in.nval;
    }
    
    public String next() throws Exception {
        in.nextToken();
        return in.sval;
    }
    
    public String nextLine() throws Exception {
        return reader.readLine();
    }
    
    public String nextString() throws Exception {
        while (!tok.hasMoreTokens())
            tok = new StringTokenizer(reader.readLine());
        return tok.nextToken();
    }
    
    public long nextLong() throws Exception {
        return Long.parseLong(nextString());
    }
    
    public double nextDouble() throws Exception {
        in.nextToken();
        return in.nval;
    }
    
    public class pair {
        int x;
        int y;
        
        public pair(int x, int y) {
            this.x=x;
            this.y=y;
        }
    }
    
    public int gcd(int a, int b) {
        if (a== 0||b==0) return 1;
        if (a<b) {
                int c=b;
                b=a;
                a=c;
        }
        while (a%b!=0) {
                a =a%b;
                if (a<b) {
                        int c=b;
                        b=a;
                        a=c;
                }
        }
        return b;
    }
    
     public int pow(int a, int n) {
         if (n==0) return 1;
         int k=n, b=1, c=a;
         while (k!=0) {
                 if (k%2==0) {
                         k/=2;
                         c*=c;
                 } else {
                         k--;
                         b*=c;
                 }
         }
         return b;
     }
    
    public int lcm(int a, int b) {
        return a*b/gcd(a,b);
    }
    
    public class pairs implements Comparable<pairs> {
        int x;
        int y;
        
        public pairs(int x, int y) {
            this.x=x;
            this.y=y;
        }

        @Override
        public int compareTo(pairs obj) {
            if (this.x<((pairs)obj).x) return 1;
            else if (this.x==(obj).x&&this.y<(obj).y) return 1;
            else if (this.x==(obj).x&&this.y==(obj).y)return 0; else
                return -1;
        }   
    }
    
    public class Graf {
        
        int [][] a;
        int [] colors;
        ArrayList <String> points = new ArrayList<String>();
        LinkedList <Integer> queue = new LinkedList <Integer>();
        boolean cycle;
        int numberOfCycle;
        
        public Graf(int [][]a,String s[]) {
            this.a=new int [s.length][s.length];
            this.a=a;
            this.colors=new int [s.length];
            for (int i=0; i<s.length;i++) {
                this.colors[i]=0;
                this.points.add(s[i]);
            }
        }
        
        public void bfs(int i) {
            this.queue.add(i);
            while (!this.queue.isEmpty())
            {
                i = this.queue.pop();
                for (int j=0; j<this.points.size();j++) {
                    if (this.a[i][j]==1&&!this.queue.contains(j)) {
                        this.a[i][j]=0;
                        this.a[j][i]=0;
                        this.queue.addLast(j);
                    }
                }
            }
        }
        
        public void dfs(int i) {
            this.colors[i]=1;
            for (int j=0; j<this.colors.length;j++) {
                if (this.a[i][j]==1&&this.colors[j]==0) {
                    this.colors[j]=1;
                    this.a[i][j]=0;
                    this.a[j][i]=0;
                    dfs(j);
                } else if (this.a[i][j]==1&&this.colors[j]==1) {
                    this.cycle=true;
                    this.numberOfCycle++;
                }
            }
            this.colors[i]=2;
        }   
    }
    
    public class Time {
        
        int h;
        int min;
        int sec;
        
        public Time(String s) {
            String [] st = s.split(":");
            this.h =Integer.parseInt(st[0]);
            this.min =Integer.parseInt(st[1]);
            this.sec =(st[2]!=null)? Integer.parseInt(st[2]):0;
        }
        
        public String toString(int a) {
            String h = Integer.toString(this.h);
            String min = Integer.toString(this.min);
            String sec = Integer.toString(this.sec);
            if (h.length()==1) {
                h='0'+h;
            }
            if (min.length()==1) {
                min='0'+min;
            }
            if (sec.length()==1) {
                sec='0'+sec;
            }
            if (a==5) {
                return h+":"+min;
            } else {
                return h+":"+min+":"+sec;
            }
        }
        
        public void to12HoursFormat () {
            h%=12;
        }
        
        public void add (int  h,int min,int s) {
            this.sec+=s;
            if (this.sec>=60) {
                this.min++;
                this.sec%=60;
            }
            this.min+=min;
            if (this.min>=60) {
                this.h++;
                this.min%=60;
            }
            this.h+=h;
            if (this.h>=24) {
                this.h%=24;
            }
        }
    }
    
    public int[] findPrimes(int x) {
        boolean[] erat = new boolean[x-1];
        List<Integer> t = new ArrayList<Integer>();
        int l=0, j=0;
        for (int i=2;i<x; i++) {
                if (erat[i-2]) continue;
                t.add(i);
                l++;
                j=i*2;
                while (j<x) {
                        erat[j-2]=true;
                        j+=i;
                }
        }
        int[] primes = new int[l];
        Iterator<Integer> iterator = t.iterator();
        for (int i = 0; iterator.hasNext(); i++) {
                primes[i]=iterator.next().intValue();
        }
        return primes;
    }   
    
    public void solve() throws Exception {
        int n=nextInt()/2;
        int x=nextInt();
        int y=nextInt();
        if ((x==n||x==n+1)&&(y==n||y==n+1))
            out.println("NO"); else out.println("YES");
    }
}