

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		try (PrintWriter out = new PrintWriter(System.out); Scanner sc = new Scanner(System.in);) {
			Task task = new Task();
			task.solve(sc, out);
			out.flush();

		} catch (Exception e) {

		}

	}

	static class Task {
		public void solve(Scanner sc, PrintWriter out) {
			int n = nint(sc);

			if (n <= 3) {
				out.print("No");
				return;
			}

			List<Integer> list4 = new ArrayList<>();
			for (int i = 4; i <= 100; i += 4) {
				list4.add(i);
			}
			List<Integer> list7 = new ArrayList<>();
			for (int i = 7; i <= 100; i += 7) {
				list7.add(i);
			}

			List<Integer> list = new ArrayList<>();
			for (int i = 0; i < list4.size(); i++) {
				for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				}
			}
			

			if (n % 4 == 0 || n % 7 == 0 || list.contains(Integer.valueOf(n))) {
				out.print("Yes");
				return;
			}
			out.print("No");
		}
	}

	// method
	static int nint(Scanner sc) {
		return Integer.parseInt(sc.next());
	}

	static long nlong(Scanner sc) {
		return Long.parseLong(sc.next());
	}

	static double ndouble(Scanner sc) {
		return Double.parseDouble(sc.next());
	}

	static float nfloat(Scanner sc) {
		return Float.parseFloat(sc.next());
	}

	static String nstr(Scanner sc) {
		return String.valueOf(sc.next());
	}

	static long[] longLine(Scanner sc, int size) {
		long[] lLine = new long[size];
		for (int i = 0; i < size; i++) {
			lLine[i] = nlong(sc);
		}
		return lLine;
	}

	static int[] intLine(Scanner sc, int size) {
		int[] iLine = new int[size];
		for (int i = 0; i < size; i++) {
			iLine[i] = nint(sc);
		}
		return iLine;
	}

	static String[] strLine(Scanner sc, int size) {
		String[] strLine = new String[size];
		for (int i = 0; i < size; i++) {
			strLine[i] = nstr(sc);
		}
		return strLine;
	}

	static long maxFromList(List<Long> longList) {
		return longList.stream().max(Comparator.naturalOrder()).get();
	}

	static long minFromList(List<Long> longList) {
		return longList.stream().min(Comparator.naturalOrder()).get();
	}

	public static int sumDigits(int n) {
		int sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	}

	public static long sumDigits(long n) {
		long sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	}

	static List<Integer> getIntegerList(Scanner sc, int size) {
		List<Integer> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nint(sc));
		}
		return list;
	}

	static List<Long> getLongList(Scanner sc, int size) {
		List<Long> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nlong(sc));
		}
		return list;
	}
} import java.io.PrintWriter; PrintWriter java.io import java.util.ArrayList; ArrayList java.util import java.util.Comparator; Comparator java.util import java.util.List; List java.util import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		try (PrintWriter out = new PrintWriter(System.out); Scanner sc = new Scanner(System.in);) {
			Task task = new Task();
			task.solve(sc, out);
			out.flush();

		} catch (Exception e) {

		}

	}

	static class Task {
		public void solve(Scanner sc, PrintWriter out) {
			int n = nint(sc);

			if (n <= 3) {
				out.print("No");
				return;
			}

			List<Integer> list4 = new ArrayList<>();
			for (int i = 4; i <= 100; i += 4) {
				list4.add(i);
			}
			List<Integer> list7 = new ArrayList<>();
			for (int i = 7; i <= 100; i += 7) {
				list7.add(i);
			}

			List<Integer> list = new ArrayList<>();
			for (int i = 0; i < list4.size(); i++) {
				for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				}
			}
			

			if (n % 4 == 0 || n % 7 == 0 || list.contains(Integer.valueOf(n))) {
				out.print("Yes");
				return;
			}
			out.print("No");
		}
	}

	// method
	static int nint(Scanner sc) {
		return Integer.parseInt(sc.next());
	}

	static long nlong(Scanner sc) {
		return Long.parseLong(sc.next());
	}

	static double ndouble(Scanner sc) {
		return Double.parseDouble(sc.next());
	}

	static float nfloat(Scanner sc) {
		return Float.parseFloat(sc.next());
	}

	static String nstr(Scanner sc) {
		return String.valueOf(sc.next());
	}

	static long[] longLine(Scanner sc, int size) {
		long[] lLine = new long[size];
		for (int i = 0; i < size; i++) {
			lLine[i] = nlong(sc);
		}
		return lLine;
	}

	static int[] intLine(Scanner sc, int size) {
		int[] iLine = new int[size];
		for (int i = 0; i < size; i++) {
			iLine[i] = nint(sc);
		}
		return iLine;
	}

	static String[] strLine(Scanner sc, int size) {
		String[] strLine = new String[size];
		for (int i = 0; i < size; i++) {
			strLine[i] = nstr(sc);
		}
		return strLine;
	}

	static long maxFromList(List<Long> longList) {
		return longList.stream().max(Comparator.naturalOrder()).get();
	}

	static long minFromList(List<Long> longList) {
		return longList.stream().min(Comparator.naturalOrder()).get();
	}

	public static int sumDigits(int n) {
		int sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	}

	public static long sumDigits(long n) {
		long sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	}

	static List<Integer> getIntegerList(Scanner sc, int size) {
		List<Integer> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nint(sc));
		}
		return list;
	}

	static List<Long> getLongList(Scanner sc, int size) {
		List<Long> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nlong(sc));
		}
		return list;
	}
} Main public static void main(String[] args) {
		try (PrintWriter out = new PrintWriter(System.out); Scanner sc = new Scanner(System.in);) {
			Task task = new Task();
			task.solve(sc, out);
			out.flush();

		} catch (Exception e) {

		}

	} main {
		try (PrintWriter out = new PrintWriter(System.out); Scanner sc = new Scanner(System.in);) {
			Task task = new Task();
			task.solve(sc, out);
			out.flush();

		} catch (Exception e) {

		}

	} try (PrintWriter out = new PrintWriter(System.out); Scanner sc = new Scanner(System.in);) {
			Task task = new Task();
			task.solve(sc, out);
			out.flush();

		} catch (Exception e) {

		} catch (Exception e) {

		} Exception e {

		} {
			Task task = new Task();
			task.solve(sc, out);
			out.flush();

		} PrintWriter out = new PrintWriter(System.out) PrintWriter out = new PrintWriter(System.out) new PrintWriter(System.out) Scanner sc = new Scanner(System.in) Scanner sc = new Scanner(System.in) new Scanner(System.in) Task task = new Task(); task new Task() task.solve(sc, out) task.solve task sc out out.flush() out.flush out String[] args args // method
	static int nint(Scanner sc) {
		return Integer.parseInt(sc.next());
	} nint {
		return Integer.parseInt(sc.next());
	} return Integer.parseInt(sc.next()); Integer.parseInt(sc.next()) Integer.parseInt Integer sc.next() sc.next sc Scanner sc sc static long nlong(Scanner sc) {
		return Long.parseLong(sc.next());
	} nlong {
		return Long.parseLong(sc.next());
	} return Long.parseLong(sc.next()); Long.parseLong(sc.next()) Long.parseLong Long sc.next() sc.next sc Scanner sc sc static double ndouble(Scanner sc) {
		return Double.parseDouble(sc.next());
	} ndouble {
		return Double.parseDouble(sc.next());
	} return Double.parseDouble(sc.next()); Double.parseDouble(sc.next()) Double.parseDouble Double sc.next() sc.next sc Scanner sc sc static float nfloat(Scanner sc) {
		return Float.parseFloat(sc.next());
	} nfloat {
		return Float.parseFloat(sc.next());
	} return Float.parseFloat(sc.next()); Float.parseFloat(sc.next()) Float.parseFloat Float sc.next() sc.next sc Scanner sc sc static String nstr(Scanner sc) {
		return String.valueOf(sc.next());
	} nstr {
		return String.valueOf(sc.next());
	} return String.valueOf(sc.next()); String.valueOf(sc.next()) String.valueOf String sc.next() sc.next sc Scanner sc sc static long[] longLine(Scanner sc, int size) {
		long[] lLine = new long[size];
		for (int i = 0; i < size; i++) {
			lLine[i] = nlong(sc);
		}
		return lLine;
	} longLine {
		long[] lLine = new long[size];
		for (int i = 0; i < size; i++) {
			lLine[i] = nlong(sc);
		}
		return lLine;
	} long[] lLine = new long[size]; lLine new long[size] size for (int i = 0; i < size; i++) {
			lLine[i] = nlong(sc);
		} int i = 0; int i = 0; i 0 i < size i size i++ i++ i {
			lLine[i] = nlong(sc);
		} {
			lLine[i] = nlong(sc);
		} lLine[i] = nlong(sc) lLine[i] lLine i nlong(sc) nlong sc return lLine; lLine Scanner sc sc int size size static int[] intLine(Scanner sc, int size) {
		int[] iLine = new int[size];
		for (int i = 0; i < size; i++) {
			iLine[i] = nint(sc);
		}
		return iLine;
	} intLine {
		int[] iLine = new int[size];
		for (int i = 0; i < size; i++) {
			iLine[i] = nint(sc);
		}
		return iLine;
	} int[] iLine = new int[size]; iLine new int[size] size for (int i = 0; i < size; i++) {
			iLine[i] = nint(sc);
		} int i = 0; int i = 0; i 0 i < size i size i++ i++ i {
			iLine[i] = nint(sc);
		} {
			iLine[i] = nint(sc);
		} iLine[i] = nint(sc) iLine[i] iLine i nint(sc) nint sc return iLine; iLine Scanner sc sc int size size static String[] strLine(Scanner sc, int size) {
		String[] strLine = new String[size];
		for (int i = 0; i < size; i++) {
			strLine[i] = nstr(sc);
		}
		return strLine;
	} strLine {
		String[] strLine = new String[size];
		for (int i = 0; i < size; i++) {
			strLine[i] = nstr(sc);
		}
		return strLine;
	} String[] strLine = new String[size]; strLine new String[size] size for (int i = 0; i < size; i++) {
			strLine[i] = nstr(sc);
		} int i = 0; int i = 0; i 0 i < size i size i++ i++ i {
			strLine[i] = nstr(sc);
		} {
			strLine[i] = nstr(sc);
		} strLine[i] = nstr(sc) strLine[i] strLine i nstr(sc) nstr sc return strLine; strLine Scanner sc sc int size size static long maxFromList(List<Long> longList) {
		return longList.stream().max(Comparator.naturalOrder()).get();
	} maxFromList {
		return longList.stream().max(Comparator.naturalOrder()).get();
	} return longList.stream().max(Comparator.naturalOrder()).get(); longList.stream().max(Comparator.naturalOrder()).get() longList.stream().max(Comparator.naturalOrder()).get longList.stream().max(Comparator.naturalOrder()) longList.stream().max longList.stream() longList.stream longList Comparator.naturalOrder() Comparator.naturalOrder Comparator List<Long> longList longList static long minFromList(List<Long> longList) {
		return longList.stream().min(Comparator.naturalOrder()).get();
	} minFromList {
		return longList.stream().min(Comparator.naturalOrder()).get();
	} return longList.stream().min(Comparator.naturalOrder()).get(); longList.stream().min(Comparator.naturalOrder()).get() longList.stream().min(Comparator.naturalOrder()).get longList.stream().min(Comparator.naturalOrder()) longList.stream().min longList.stream() longList.stream longList Comparator.naturalOrder() Comparator.naturalOrder Comparator List<Long> longList longList public static int sumDigits(int n) {
		int sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	} sumDigits {
		int sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	} int sum = 0; sum 0 while (n != 0) {
			sum += n % 10;
			n /= 10;
		} n != 0 n 0 {
			sum += n % 10;
			n /= 10;
		} sum += n % 10 sum n % 10 n 10 n /= 10 n 10 return sum; sum int n n public static long sumDigits(long n) {
		long sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	} sumDigits {
		long sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	} long sum = 0; sum 0 while (n != 0) {
			sum += n % 10;
			n /= 10;
		} n != 0 n 0 {
			sum += n % 10;
			n /= 10;
		} sum += n % 10 sum n % 10 n 10 n /= 10 n 10 return sum; sum long n n static List<Integer> getIntegerList(Scanner sc, int size) {
		List<Integer> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nint(sc));
		}
		return list;
	} getIntegerList {
		List<Integer> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nint(sc));
		}
		return list;
	} List<Integer> list = new ArrayList<>(); list new ArrayList<>() for (int i = 0; i < size; i++) {
			list.add(nint(sc));
		} int i = 0; int i = 0; i 0 i < size i size i++ i++ i {
			list.add(nint(sc));
		} {
			list.add(nint(sc));
		} list.add(nint(sc)) list.add list nint(sc) nint sc return list; list Scanner sc sc int size size static List<Long> getLongList(Scanner sc, int size) {
		List<Long> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nlong(sc));
		}
		return list;
	} getLongList {
		List<Long> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nlong(sc));
		}
		return list;
	} List<Long> list = new ArrayList<>(); list new ArrayList<>() for (int i = 0; i < size; i++) {
			list.add(nlong(sc));
		} int i = 0; int i = 0; i 0 i < size i size i++ i++ i {
			list.add(nlong(sc));
		} {
			list.add(nlong(sc));
		} list.add(nlong(sc)) list.add list nlong(sc) nlong sc return list; list Scanner sc sc int size size static class Task {
		public void solve(Scanner sc, PrintWriter out) {
			int n = nint(sc);

			if (n <= 3) {
				out.print("No");
				return;
			}

			List<Integer> list4 = new ArrayList<>();
			for (int i = 4; i <= 100; i += 4) {
				list4.add(i);
			}
			List<Integer> list7 = new ArrayList<>();
			for (int i = 7; i <= 100; i += 7) {
				list7.add(i);
			}

			List<Integer> list = new ArrayList<>();
			for (int i = 0; i < list4.size(); i++) {
				for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				}
			}
			

			if (n % 4 == 0 || n % 7 == 0 || list.contains(Integer.valueOf(n))) {
				out.print("Yes");
				return;
			}
			out.print("No");
		}
	} Task public void solve(Scanner sc, PrintWriter out) {
			int n = nint(sc);

			if (n <= 3) {
				out.print("No");
				return;
			}

			List<Integer> list4 = new ArrayList<>();
			for (int i = 4; i <= 100; i += 4) {
				list4.add(i);
			}
			List<Integer> list7 = new ArrayList<>();
			for (int i = 7; i <= 100; i += 7) {
				list7.add(i);
			}

			List<Integer> list = new ArrayList<>();
			for (int i = 0; i < list4.size(); i++) {
				for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				}
			}
			

			if (n % 4 == 0 || n % 7 == 0 || list.contains(Integer.valueOf(n))) {
				out.print("Yes");
				return;
			}
			out.print("No");
		} solve {
			int n = nint(sc);

			if (n <= 3) {
				out.print("No");
				return;
			}

			List<Integer> list4 = new ArrayList<>();
			for (int i = 4; i <= 100; i += 4) {
				list4.add(i);
			}
			List<Integer> list7 = new ArrayList<>();
			for (int i = 7; i <= 100; i += 7) {
				list7.add(i);
			}

			List<Integer> list = new ArrayList<>();
			for (int i = 0; i < list4.size(); i++) {
				for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				}
			}
			

			if (n % 4 == 0 || n % 7 == 0 || list.contains(Integer.valueOf(n))) {
				out.print("Yes");
				return;
			}
			out.print("No");
		} int n = nint(sc); n nint(sc) nint sc if (n <= 3) {
				out.print("No");
				return;
			} n <= 3 n 3 {
				out.print("No");
				return;
			} out.print("No") out.print out "No" return; List<Integer> list4 = new ArrayList<>(); list4 new ArrayList<>() for (int i = 4; i <= 100; i += 4) {
				list4.add(i);
			} int i = 4; int i = 4; i 4 i <= 100 i 100 i += 4 i += 4 i 4 {
				list4.add(i);
			} {
				list4.add(i);
			} list4.add(i) list4.add list4 i List<Integer> list7 = new ArrayList<>(); list7 new ArrayList<>() for (int i = 7; i <= 100; i += 7) {
				list7.add(i);
			} int i = 7; int i = 7; i 7 i <= 100 i 100 i += 7 i += 7 i 7 {
				list7.add(i);
			} {
				list7.add(i);
			} list7.add(i) list7.add list7 i List<Integer> list = new ArrayList<>(); list new ArrayList<>() for (int i = 0; i < list4.size(); i++) {
				for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				}
			} int i = 0; int i = 0; i 0 i < list4.size() i list4.size() list4.size list4 i++ i++ i {
				for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				}
			} {
				for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				}
			} for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				} int j = 0; int j = 0; j 0 j < list7.size() j list7.size() list7.size list7 j++ j++ j {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				} {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				} int ii = list4.get(i); ii list4.get(i) list4.get list4 i int jj = list7.get(j); jj list7.get(j) list7.get list7 j list.add(ii + jj) list.add list ii + jj ii jj if (n % 4 == 0 || n % 7 == 0 || list.contains(Integer.valueOf(n))) {
				out.print("Yes");
				return;
			} n % 4 == 0 || n % 7 == 0 || list.contains(Integer.valueOf(n)) n % 4 == 0 || n % 7 == 0 || list.contains(Integer.valueOf(n)) n % 4 == 0 n % 4 n 4 0 n % 7 == 0 n % 7 n 7 0 list.contains(Integer.valueOf(n)) list.contains list Integer.valueOf(n) Integer.valueOf Integer n {
				out.print("Yes");
				return;
			} out.print("Yes") out.print out "Yes" return; out.print("No") out.print out "No" Scanner sc sc PrintWriter out out public class Main {
	public static void main(String[] args) {
		try (PrintWriter out = new PrintWriter(System.out); Scanner sc = new Scanner(System.in);) {
			Task task = new Task();
			task.solve(sc, out);
			out.flush();

		} catch (Exception e) {

		}

	}

	static class Task {
		public void solve(Scanner sc, PrintWriter out) {
			int n = nint(sc);

			if (n <= 3) {
				out.print("No");
				return;
			}

			List<Integer> list4 = new ArrayList<>();
			for (int i = 4; i <= 100; i += 4) {
				list4.add(i);
			}
			List<Integer> list7 = new ArrayList<>();
			for (int i = 7; i <= 100; i += 7) {
				list7.add(i);
			}

			List<Integer> list = new ArrayList<>();
			for (int i = 0; i < list4.size(); i++) {
				for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				}
			}
			

			if (n % 4 == 0 || n % 7 == 0 || list.contains(Integer.valueOf(n))) {
				out.print("Yes");
				return;
			}
			out.print("No");
		}
	}

	// method
	static int nint(Scanner sc) {
		return Integer.parseInt(sc.next());
	}

	static long nlong(Scanner sc) {
		return Long.parseLong(sc.next());
	}

	static double ndouble(Scanner sc) {
		return Double.parseDouble(sc.next());
	}

	static float nfloat(Scanner sc) {
		return Float.parseFloat(sc.next());
	}

	static String nstr(Scanner sc) {
		return String.valueOf(sc.next());
	}

	static long[] longLine(Scanner sc, int size) {
		long[] lLine = new long[size];
		for (int i = 0; i < size; i++) {
			lLine[i] = nlong(sc);
		}
		return lLine;
	}

	static int[] intLine(Scanner sc, int size) {
		int[] iLine = new int[size];
		for (int i = 0; i < size; i++) {
			iLine[i] = nint(sc);
		}
		return iLine;
	}

	static String[] strLine(Scanner sc, int size) {
		String[] strLine = new String[size];
		for (int i = 0; i < size; i++) {
			strLine[i] = nstr(sc);
		}
		return strLine;
	}

	static long maxFromList(List<Long> longList) {
		return longList.stream().max(Comparator.naturalOrder()).get();
	}

	static long minFromList(List<Long> longList) {
		return longList.stream().min(Comparator.naturalOrder()).get();
	}

	public static int sumDigits(int n) {
		int sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	}

	public static long sumDigits(long n) {
		long sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	}

	static List<Integer> getIntegerList(Scanner sc, int size) {
		List<Integer> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nint(sc));
		}
		return list;
	}

	static List<Long> getLongList(Scanner sc, int size) {
		List<Long> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nlong(sc));
		}
		return list;
	}
} public class Main {
	public static void main(String[] args) {
		try (PrintWriter out = new PrintWriter(System.out); Scanner sc = new Scanner(System.in);) {
			Task task = new Task();
			task.solve(sc, out);
			out.flush();

		} catch (Exception e) {

		}

	}

	static class Task {
		public void solve(Scanner sc, PrintWriter out) {
			int n = nint(sc);

			if (n <= 3) {
				out.print("No");
				return;
			}

			List<Integer> list4 = new ArrayList<>();
			for (int i = 4; i <= 100; i += 4) {
				list4.add(i);
			}
			List<Integer> list7 = new ArrayList<>();
			for (int i = 7; i <= 100; i += 7) {
				list7.add(i);
			}

			List<Integer> list = new ArrayList<>();
			for (int i = 0; i < list4.size(); i++) {
				for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				}
			}
			

			if (n % 4 == 0 || n % 7 == 0 || list.contains(Integer.valueOf(n))) {
				out.print("Yes");
				return;
			}
			out.print("No");
		}
	}

	// method
	static int nint(Scanner sc) {
		return Integer.parseInt(sc.next());
	}

	static long nlong(Scanner sc) {
		return Long.parseLong(sc.next());
	}

	static double ndouble(Scanner sc) {
		return Double.parseDouble(sc.next());
	}

	static float nfloat(Scanner sc) {
		return Float.parseFloat(sc.next());
	}

	static String nstr(Scanner sc) {
		return String.valueOf(sc.next());
	}

	static long[] longLine(Scanner sc, int size) {
		long[] lLine = new long[size];
		for (int i = 0; i < size; i++) {
			lLine[i] = nlong(sc);
		}
		return lLine;
	}

	static int[] intLine(Scanner sc, int size) {
		int[] iLine = new int[size];
		for (int i = 0; i < size; i++) {
			iLine[i] = nint(sc);
		}
		return iLine;
	}

	static String[] strLine(Scanner sc, int size) {
		String[] strLine = new String[size];
		for (int i = 0; i < size; i++) {
			strLine[i] = nstr(sc);
		}
		return strLine;
	}

	static long maxFromList(List<Long> longList) {
		return longList.stream().max(Comparator.naturalOrder()).get();
	}

	static long minFromList(List<Long> longList) {
		return longList.stream().min(Comparator.naturalOrder()).get();
	}

	public static int sumDigits(int n) {
		int sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	}

	public static long sumDigits(long n) {
		long sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	}

	static List<Integer> getIntegerList(Scanner sc, int size) {
		List<Integer> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nint(sc));
		}
		return list;
	}

	static List<Long> getLongList(Scanner sc, int size) {
		List<Long> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nlong(sc));
		}
		return list;
	}
} Main


import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		try (PrintWriter out = new PrintWriter(System.out); Scanner sc = new Scanner(System.in);) {
			Task task = new Task();
			task.solve(sc, out);
			out.flush();

		} catch (Exception e) {

		}

	}

	static class Task {
		public void solve(Scanner sc, PrintWriter out) {
			int n = nint(sc);

			if (n <= 3) {
				out.print("No");
				return;
			}

			List<Integer> list4 = new ArrayList<>();
			for (int i = 4; i <= 100; i += 4) {
				list4.add(i);
			}
			List<Integer> list7 = new ArrayList<>();
			for (int i = 7; i <= 100; i += 7) {
				list7.add(i);
			}

			List<Integer> list = new ArrayList<>();
			for (int i = 0; i < list4.size(); i++) {
				for (int j = 0; j < list7.size(); j++) {
					int ii = list4.get(i);
					int jj = list7.get(j);
					list.add(ii + jj);
				}
			}
			

			if (n % 4 == 0 || n % 7 == 0 || list.contains(Integer.valueOf(n))) {
				out.print("Yes");
				return;
			}
			out.print("No");
		}
	}

	// method
	static int nint(Scanner sc) {
		return Integer.parseInt(sc.next());
	}

	static long nlong(Scanner sc) {
		return Long.parseLong(sc.next());
	}

	static double ndouble(Scanner sc) {
		return Double.parseDouble(sc.next());
	}

	static float nfloat(Scanner sc) {
		return Float.parseFloat(sc.next());
	}

	static String nstr(Scanner sc) {
		return String.valueOf(sc.next());
	}

	static long[] longLine(Scanner sc, int size) {
		long[] lLine = new long[size];
		for (int i = 0; i < size; i++) {
			lLine[i] = nlong(sc);
		}
		return lLine;
	}

	static int[] intLine(Scanner sc, int size) {
		int[] iLine = new int[size];
		for (int i = 0; i < size; i++) {
			iLine[i] = nint(sc);
		}
		return iLine;
	}

	static String[] strLine(Scanner sc, int size) {
		String[] strLine = new String[size];
		for (int i = 0; i < size; i++) {
			strLine[i] = nstr(sc);
		}
		return strLine;
	}

	static long maxFromList(List<Long> longList) {
		return longList.stream().max(Comparator.naturalOrder()).get();
	}

	static long minFromList(List<Long> longList) {
		return longList.stream().min(Comparator.naturalOrder()).get();
	}

	public static int sumDigits(int n) {
		int sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	}

	public static long sumDigits(long n) {
		long sum = 0;
		while (n != 0) {
			sum += n % 10;
			n /= 10;
		}
		return sum;
	}

	static List<Integer> getIntegerList(Scanner sc, int size) {
		List<Integer> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nint(sc));
		}
		return list;
	}

	static List<Long> getLongList(Scanner sc, int size) {
		List<Long> list = new ArrayList<>();
		for (int i = 0; i < size; i++) {
			list.add(nlong(sc));
		}
		return list;
	}
}