import java.util.*;


public  class Main {
		
	    Node head_node=new Node();
		Node tail_point=head_node;//尾指针
		Node current;//当前位置指针
		
		//插入节点
		public void same(String data) {
			//处理字符串
			String w;
			int sum=1;
			//添加进单链表
			for(int i=0;i<data.length();i++) {
				w=data.substring(i,i+1);
				Node temp=new Node(w);
				tail_point.next=temp;
				temp.next=null;
				tail_point=temp;
				
			}
			
			boolean flag=true;
			current=head_node.next;
			Node current1=current;
			Node current2=current.next;
			do {
				while(current2!=null) {	
					if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					}
				}
				if(sum%2==0) {
					
					if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					}
				}else {
					flag=false;
					System.out.println("No");
				}
			}while(flag);
				
		}
		
		//处理相同的字符串
		
	public class Node {
		String  data;//数据域
		Node next;//指针域
		//节点构造
		public Node(String data) {
			this.data=data;
		}
		public Node() {
		
		}
			
	}
	
   
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
	    String W=sc.nextLine();
	    Main B=new Main();
	    B.same(W);
	   
	}
}

	 import java.util.*; util.* java public  class Main {
		
	    Node head_node=new Node();
		Node tail_point=head_node;//尾指针
		Node current;//当前位置指针
		
		//插入节点
		public void same(String data) {
			//处理字符串
			String w;
			int sum=1;
			//添加进单链表
			for(int i=0;i<data.length();i++) {
				w=data.substring(i,i+1);
				Node temp=new Node(w);
				tail_point.next=temp;
				temp.next=null;
				tail_point=temp;
				
			}
			
			boolean flag=true;
			current=head_node.next;
			Node current1=current;
			Node current2=current.next;
			do {
				while(current2!=null) {	
					if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					}
				}
				if(sum%2==0) {
					
					if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					}
				}else {
					flag=false;
					System.out.println("No");
				}
			}while(flag);
				
		}
		
		//处理相同的字符串
		
	public class Node {
		String  data;//数据域
		Node next;//指针域
		//节点构造
		public Node(String data) {
			this.data=data;
		}
		public Node() {
		
		}
			
	}
	
   
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
	    String W=sc.nextLine();
	    Main B=new Main();
	    B.same(W);
	   
	}
} Main Node head_node=new Node(); head_node new Node() Node tail_point=head_node;//尾指针 tail_point head_node Node current;//当前位置指针 current //插入节点
		public void same(String data) {
			//处理字符串
			String w;
			int sum=1;
			//添加进单链表
			for(int i=0;i<data.length();i++) {
				w=data.substring(i,i+1);
				Node temp=new Node(w);
				tail_point.next=temp;
				temp.next=null;
				tail_point=temp;
				
			}
			
			boolean flag=true;
			current=head_node.next;
			Node current1=current;
			Node current2=current.next;
			do {
				while(current2!=null) {	
					if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					}
				}
				if(sum%2==0) {
					
					if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					}
				}else {
					flag=false;
					System.out.println("No");
				}
			}while(flag);
				
		} same {
			//处理字符串
			String w;
			int sum=1;
			//添加进单链表
			for(int i=0;i<data.length();i++) {
				w=data.substring(i,i+1);
				Node temp=new Node(w);
				tail_point.next=temp;
				temp.next=null;
				tail_point=temp;
				
			}
			
			boolean flag=true;
			current=head_node.next;
			Node current1=current;
			Node current2=current.next;
			do {
				while(current2!=null) {	
					if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					}
				}
				if(sum%2==0) {
					
					if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					}
				}else {
					flag=false;
					System.out.println("No");
				}
			}while(flag);
				
		} String w; w int sum=1; sum 1 for(int i=0;i<data.length();i++) {
				w=data.substring(i,i+1);
				Node temp=new Node(w);
				tail_point.next=temp;
				temp.next=null;
				tail_point=temp;
				
			} int i=0; int i=0; i 0 i<data.length() i data.length() data.length data i++ i++ i {
				w=data.substring(i,i+1);
				Node temp=new Node(w);
				tail_point.next=temp;
				temp.next=null;
				tail_point=temp;
				
			} {
				w=data.substring(i,i+1);
				Node temp=new Node(w);
				tail_point.next=temp;
				temp.next=null;
				tail_point=temp;
				
			} w=data.substring(i,i+1) w data.substring(i,i+1) data.substring data i i+1 i 1 Node temp=new Node(w); temp new Node(w) tail_point.next=temp tail_point.next tail_point tail_point.next temp temp.next=null temp.next temp temp.next null tail_point=temp tail_point temp boolean flag=true; flag true current=head_node.next current head_node.next head_node head_node.next Node current1=current; current1 current Node current2=current.next; current2 current.next current current.next do {
				while(current2!=null) {	
					if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					}
				}
				if(sum%2==0) {
					
					if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					}
				}else {
					flag=false;
					System.out.println("No");
				}
			}while(flag); flag {
				while(current2!=null) {	
					if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					}
				}
				if(sum%2==0) {
					
					if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					}
				}else {
					flag=false;
					System.out.println("No");
				}
			} while(current2!=null) {	
					if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					}
				} current2!=null current2 null {	
					if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					}
				} if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					} current.data.equals(current2.data) current.data.equals current.data current current.data current2.data current2 current2.data {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					} sum++ sum current1.next=current2.next current1.next current1 current1.next current2.next current2 current2.next current2=current2.next current2 current2.next current2 current2.next {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					} current1=current1.next current1 current1.next current1 current1.next current2=current2.next current2 current2.next current2 current2.next if(sum%2==0) {
					
					if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					}
				}else {
					flag=false;
					System.out.println("No");
				} sum%2==0 sum%2 sum 2 0 {
					
					if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					}
				} if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					} current2==null&&current.next==null current2==null current2 null current.next==null current.next current current.next null {
						System.out.println("Yes");
						flag=false;
					} System.out.println("Yes") System.out.println System.out System System.out "Yes" flag=false flag false {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					} current=current.next current current.next current current.next current1=current current1 current current2=current.next current2 current.next current current.next sum=1 sum 1 {
					flag=false;
					System.out.println("No");
				} flag=false flag false System.out.println("No") System.out.println System.out System System.out "No" String data data public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
	    String W=sc.nextLine();
	    Main B=new Main();
	    B.same(W);
	   
	} main {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
	    String W=sc.nextLine();
	    Main B=new Main();
	    B.same(W);
	   
	} Scanner sc=new Scanner(System.in); sc new Scanner(System.in) String W=sc.nextLine(); W sc.nextLine() sc.nextLine sc Main B=new Main(); B new Main() B.same(W) B.same B W String[] args args public class Node {
		String  data;//数据域
		Node next;//指针域
		//节点构造
		public Node(String data) {
			this.data=data;
		}
		public Node() {
		
		}
			
	} Node String  data;//数据域 data Node next;//指针域 next //节点构造
		public Node(String data) {
			this.data=data;
		} Node {
			this.data=data;
		} this.data=data this.data this this.data data String data data public Node() {
		
		} Node {
		
		} public  class Main {
		
	    Node head_node=new Node();
		Node tail_point=head_node;//尾指针
		Node current;//当前位置指针
		
		//插入节点
		public void same(String data) {
			//处理字符串
			String w;
			int sum=1;
			//添加进单链表
			for(int i=0;i<data.length();i++) {
				w=data.substring(i,i+1);
				Node temp=new Node(w);
				tail_point.next=temp;
				temp.next=null;
				tail_point=temp;
				
			}
			
			boolean flag=true;
			current=head_node.next;
			Node current1=current;
			Node current2=current.next;
			do {
				while(current2!=null) {	
					if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					}
				}
				if(sum%2==0) {
					
					if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					}
				}else {
					flag=false;
					System.out.println("No");
				}
			}while(flag);
				
		}
		
		//处理相同的字符串
		
	public class Node {
		String  data;//数据域
		Node next;//指针域
		//节点构造
		public Node(String data) {
			this.data=data;
		}
		public Node() {
		
		}
			
	}
	
   
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
	    String W=sc.nextLine();
	    Main B=new Main();
	    B.same(W);
	   
	}
} public  class Main {
		
	    Node head_node=new Node();
		Node tail_point=head_node;//尾指针
		Node current;//当前位置指针
		
		//插入节点
		public void same(String data) {
			//处理字符串
			String w;
			int sum=1;
			//添加进单链表
			for(int i=0;i<data.length();i++) {
				w=data.substring(i,i+1);
				Node temp=new Node(w);
				tail_point.next=temp;
				temp.next=null;
				tail_point=temp;
				
			}
			
			boolean flag=true;
			current=head_node.next;
			Node current1=current;
			Node current2=current.next;
			do {
				while(current2!=null) {	
					if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					}
				}
				if(sum%2==0) {
					
					if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					}
				}else {
					flag=false;
					System.out.println("No");
				}
			}while(flag);
				
		}
		
		//处理相同的字符串
		
	public class Node {
		String  data;//数据域
		Node next;//指针域
		//节点构造
		public Node(String data) {
			this.data=data;
		}
		public Node() {
		
		}
			
	}
	
   
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
	    String W=sc.nextLine();
	    Main B=new Main();
	    B.same(W);
	   
	}
} Main
import java.util.*;


public  class Main {
		
	    Node head_node=new Node();
		Node tail_point=head_node;//尾指针
		Node current;//当前位置指针
		
		//插入节点
		public void same(String data) {
			//处理字符串
			String w;
			int sum=1;
			//添加进单链表
			for(int i=0;i<data.length();i++) {
				w=data.substring(i,i+1);
				Node temp=new Node(w);
				tail_point.next=temp;
				temp.next=null;
				tail_point=temp;
				
			}
			
			boolean flag=true;
			current=head_node.next;
			Node current1=current;
			Node current2=current.next;
			do {
				while(current2!=null) {	
					if(current.data.equals(current2.data)) {
						//如果同字符，sum就加一，并且将这个节点删除
						sum++;
						current1.next=current2.next;
						current2=current2.next;
						
					}else {
						//如果字符不相同，就节点向后移动
						current1=current1.next;
						current2=current2.next;
					}
				}
				if(sum%2==0) {
					
					if(current2==null&&current.next==null) {
						System.out.println("Yes");
						flag=false;
					}else {
						current=current.next;
						current1=current;
						current2=current.next;
						sum=1;
					}
				}else {
					flag=false;
					System.out.println("No");
				}
			}while(flag);
				
		}
		
		//处理相同的字符串
		
	public class Node {
		String  data;//数据域
		Node next;//指针域
		//节点构造
		public Node(String data) {
			this.data=data;
		}
		public Node() {
		
		}
			
	}
	
   
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
	    String W=sc.nextLine();
	    Main B=new Main();
	    B.same(W);
	   
	}
}

	