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

public class io2 {

	static long mod = (long) 1e9 + 7;
	static boolean multipleTC = false;

	void solve(int TC) throws Exception {
		String s = in.n();
		int ans = 0;
		if (s.indexOf("Nikita") != -1) {
			ans++;
			if (s.indexOf("Nikita") != s.lastIndexOf("Nikita"))
				ans++;
		}
		if (ans > 1) {
			pl("NO\n");
			return;
		}
		if (s.indexOf("Ann") != -1) {
			ans++;
			if (s.indexOf("Ann") != s.lastIndexOf("Ann"))
				ans++;
		}
		if (ans > 1) {
			pl("NO\n");
			return;
		}
		if (s.indexOf("Slava") != -1) {
			ans++;
			if (s.indexOf("Slava") != s.lastIndexOf("Slava"))
				ans++;
		}
		if (ans > 1) {
			pl("NO\n");
			return;
		}
		if (s.indexOf("Olya") != -1) {
			ans++;
			if (s.indexOf("Olya") != s.lastIndexOf("Olya"))
				ans++;
		}
		if (ans > 1) {
			pl("NO\n");
			return;
		}
		if (s.indexOf("Danil") != -1) {
			ans++;
			if (s.indexOf("Danil") != s.lastIndexOf("Danil"))
				ans++;
		}
		if (ans == 1)
			pl("YES\n");
		else
			pl("NO\n");
	}

	void hold(boolean b) throws Exception {
		if (!b)
			throw new Exception("@author : ashraf101");
	}

	DecimalFormat df = new DecimalFormat("0.00000000000");
	FastReader in;
	PrintWriter out;

	void run() throws Exception {
		in = new FastReader();
		out = new PrintWriter(System.out);
		int T = (multipleTC) ? in.ni() : 1;
		pre();
		for (int t = 1; t <= T; t++)
			solve(t);
		out.flush();
		out.close();
	}

	public static void main(String[] args) throws Exception {
		new io2().run();
	}

	void pre() throws Exception {
	}

	void p(Object o) {
		out.print(o);
	}

	void pl(Object o) {
		out.println(o);
	}

	void pni(Object o) {
		out.println(o);
		out.flush();
	}

	class FastReader {
		BufferedReader br;
		StringTokenizer st;

		public FastReader() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}

		public FastReader(String s) throws Exception {
			br = new BufferedReader(new FileReader(s));
		}

		String next() throws Exception {
			while (st == null || !st.hasMoreElements()) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch (IOException e) {
					throw new Exception(e.toString());
				}
			}
			return st.nextToken();
		}

		String nextLine() throws Exception {
			String str = "";
			try {
				str = br.readLine();
			} catch (IOException e) {
				throw new Exception(e.toString());
			}
			return str;
		}

		int bit(long n) {
			return (n == 0) ? 0 : (1 + bit(n & (n - 1)));
		}

		String n() throws Exception {
			return in.next();
		}

		String nln() throws Exception {
			return in.nextLine();
		}

		int ni() throws Exception {
			return Integer.parseInt(in.next());
		}

		long nl() throws Exception {
			return Long.parseLong(in.next());
		}

		double nd() throws Exception {
			return Double.parseDouble(in.next());
		}
	}
}
