One day Alex was creating a contest about his friends, but accidentally deleted it. Fortunately, all the problems were saved, but now he needs to find them among other problems.

But there are too many problems, to do it manually. Alex asks you to write a program, which will determine if a problem is from this contest by its name.

It is known, that problem is from this contest if and only if its name contains one of Alex's friends' name exactly once. His friends' names are "Danil", "Olya", "Slava", "Ann" and "Nikita".

Names are case sensitive.

Input

The only line contains string from lowercase and uppercase letters and "_" symbols of length, not more than 100 — the name of the problem.

Output

Print "YES", if problem is from this contest, and "NO" otherwise.

Examples

Input

Alex_and_broken_contest


Output

NO

Input

NikitaAndString


Output

YES

Input

Danil_and_Olya


Output

NO
import java.io.*;
import java.util.*;
import java.lang.System;
public class Solution{
	static PrintStream out=System.out;
	static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    static StringTokenizer st;
	static Scanner sc=new Scanner(System.in);
	


	static String str;
	static int check(String name){
		int l=name.length();
		int ans=0;
		for(int i=0;i<str.length();i++){
			//if(i+l<=str.length())out.println(str.substring(i,i+l));
			if(i+l<=str.length() && str.substring(i,i+l).equals(name)){ans+=1;}
		}
		return ans;
	}
	static void Task(){
		str=ns();
		int ans=check("Danil") + check("Olya") + check("Slava") + check("Ann") +check("Nikita");
		if(ans==1)out.println("YES");
		else out.println("NO");
	}







	public static void main(String args[]){
		Task();
	}
	static int ni(){
		return Integer.parseInt(ns());
	}
	static long nl(){
		 return Long.parseLong(ns());
	}
	static double nd(){
		return Double.parseDouble(ns());
	}
	static String ns(){
		while (st == null || !st.hasMoreElements()){
			try{
				st = new StringTokenizer(br.readLine());
			}catch (IOException  e){
				e.printStackTrace();
			}
		}
		return st.nextToken();
	}
	static int[] nia(int n){
		int[] arr=new int[n];
		for(int i=0;i<n;i++)arr[i]=ni();
		return arr;
	}
	static long[] nla(int n){
		long[] arr=new long[n];
		for(int i=0;i<n;i++)arr[i]=nl();
		return arr;
	}
	static String nline(){
		String str = "";
        try{
            str = br.readLine();
        }catch (IOException e){
            e.printStackTrace();
        }
        return str;
	}
	static ArrayList<Integer>[] nAdjList(int n,int k){
		ArrayList<Integer>[] al=new ArrayList[n];
		for(int i=0;i<n;i++)al[i]=new ArrayList<Integer>();
		for(int i=0;i<k;i++){
			int x=ni(),y=ni();
			al[x].add(y);
			al[y].add(x);
		}
		return al;
	}
	static int i(long l){
		return (int)Math.round(l);
	}
}