Two people are playing a game with a string s, consisting of lowercase latin letters. 

On a player's turn, he should choose two consecutive equal letters in the string and delete them. 

For example, if the string is equal to "xaax" than there is only one possible turn: delete "aa", so the string will become "xx". A player not able to make a turn loses.

Your task is to determine which player will win if both play optimally.

Input

The only line contains the string s, consisting of lowercase latin letters (1 ≤ |s| ≤ 100 000), where |s| means the length of a string s.

Output

If the first player wins, print "Yes". If the second player wins, print "No".

Examples

Input


abacaba


Output


No


Input


iiq


Output


Yes


Input


abba


Output


No

Note

In the first example the first player is unable to make a turn, so he loses.

In the second example first player turns the string into "q", then second player is unable to move, so he loses.
import java.io.*;
import java.math.BigInteger;
import java.util.*;



public class Kanswer {
	static PrintWriter out=new PrintWriter(System.out);
	static int x[],memo[][],ans,a[];
	static int n,p[],w[],W;
	static HashSet<Integer> hs[];
	public static void main(String[] args) throws Exception{
		//Scanner sc=new Scanner("strips.in");
		Scanner sc=new Scanner(System.in);
		String x=sc.next();
		Stack<Character> s=new Stack<>();
		s.push(x.charAt(0));
		int one=0;

		for(int i=1;i<x.length();i++) {

			if(x.charAt(i)==s.peek()) {
				s.pop();
				one++;


			}
			else {
				s.push(x.charAt(i));
			}
			if(s.isEmpty()&&i+1<x.length()) {
				s.push(x.charAt(i+1));
				i++;
			}
		}

		if(one%2!=0)out.println("Yes");
		else {
			out.println("No");
		}
		out.flush();
	}
	static boolean [] vis,vis2;
	static void dfs(int u) {
		vis[u]=true;
		for(int v:hs[u]) {
			if(!vis[v]) {
				dfs(v);
			}
		}
	}
	static void dfs2(int u) {
		vis2[u]=true;
		for(int v:hs[u]) {
			if(!vis[v]) {
				dfs(v);
			}
		}
	}
	static class hi implements Comparable<hi>{
		int node;
		int val;

		hi(int n,int v){
			node=n;
			val=v;
		}

		@Override
		public int compareTo(hi o) {
			return o.val-val;
		}
	}
	static int dp(int i,int sumsofar) {
		//System.out.println("##");
		if(i==n) {
			//	System.out.println(sumsofar);
			if(sumsofar%360==0) return 1;
			else return 0;
		}
		if(memo[i][sumsofar]!=-1) {
			//	out.println("HI");
			return memo[i][sumsofar];
		}//System.out.println((sumsofar+a[i]+360)%360+" "+(sumsofar-a[i]+360)%360+" "+i);
		int take=dp(i+1,(sumsofar+a[i]+360)%360);
		int leave=dp(i+1,(sumsofar-a[i]+360)%360);

		return memo[i][sumsofar]=take|leave;


	}
	static void trace(int i,int sumsofar) {
		if (i==n) return;
		if(dp(i,sumsofar)==dp(i+1,sumsofar+a[i]>=0?(sumsofar+a[i])%360:(sumsofar+a[i]+360)%360)) {
			out.print(a[i]+" ");
			trace(i+1,sumsofar+a[i]>=0?(sumsofar+a[i])%360:(sumsofar+a[i]+360)%360);
		}
		else {
			if (dp(i,sumsofar)==dp(i+1,sumsofar-a[i]>=0?(sumsofar-a[i])%360:(sumsofar-a[i]+360)%360)){
				out.print(-a[i]+" ");
				trace(i+1,sumsofar+a[i]>=0?(sumsofar+a[i])%360:(sumsofar+a[i]+360)%360);
			}
		}
	}
	static boolean valid(int x,int n) {
		return x>=0&&x<n;
	}






	static class mando implements Comparable<mando>{
		char c;
		int val;
		mando(char cc,int v){
			c=cc;
			val=v;
		}
		@Override
		public int compareTo(mando o) {
			return val-o.val;
		}

	}
	static int []visited; 

}
class Scanner{
	StringTokenizer st;
	BufferedReader br;
	public Scanner(InputStream system) { br = new BufferedReader(new InputStreamReader(system));}
	public Scanner(String file) throws Exception{br = new BufferedReader(new FileReader (file));}
	public String next() throws IOException{
		while (st==null|| !st.hasMoreTokens()) st = new StringTokenizer(br.readLine());
		return st.nextToken();
	}
	public int nextInt() throws IOException{
		return Integer.parseInt(next());
	}
	public long nextLong() throws IOException{
		return Long.parseLong(next());
	}
	public String nextLine() throws IOException{
		return br.readLine();
	}


}