import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class Main {
	// 席
	static String[] seat = new String[17];
	static String emptySeatString = "_";

	public static void main(String[] args) throws Exception {
		// 初期値設定
		Arrays.fill(seat, emptySeatString);
		// グループ
		Group[] group;
		// 退店グループリスト
		Map<Integer, Integer> byeGroupMap;
		// インプット
		List<Integer> input = new ArrayList<Integer>();
		int maxInputNum = 0;

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		// 最終行まで読み込む
		String num = "";
		while ((num = br.readLine()) != null) {
			input.add(Integer.parseInt(num));
			maxInputNum = Math.max(maxInputNum, Integer.parseInt(num));
		}

		if (maxInputNum >= 100) {
			group = new Group[100];
		} else {
			group = new Group[maxInputNum + 1];
		}

		int i = 0;
		group[maxInputNum] = new Group();

		// ラストのグループが食べ終わるまでループ処理実行
		while (!group[maxInputNum].eatFlug) {

			// 退店グループリストの初期化
			byeGroupMap = new HashMap<Integer, Integer>();

			for (int n = 0; n < i; n++) {
				if (maxInputNum < n) {
					break;
				}

				// 食べてるグループ
				if (!group[n].waitFlug && !group[n].eatFlug) {
					// 経過時間カウント
					group[n].pastTime += 5;
					// 食べ終わったか確認
					if (group[n].pastTime >= group[n].eatTime) {

						// 退店グループリスト追加（後ほど退店処理で実施）
						byeGroupMap
								.put(n, group[n].pastTime - group[n].eatTime);
						group[n].eatFlug = true;
					}
				}
				// 待ってるグループは待ち時間をカウント
				else if (group[n].waitFlug) {
					group[n].waitTime += 5;
				}
			}

			// ここで退入店処理を実施
			if (!byeGroupMap.isEmpty()) {

				// List 生成 (ソート用)
				List<Map.Entry<Integer, Integer>> entries = new ArrayList<Map.Entry<Integer, Integer>>(
						byeGroupMap.entrySet());
				Collections.sort(entries,
						new Comparator<Map.Entry<Integer, Integer>>() {

							@Override
							public int compare(Entry<Integer, Integer> entry1,
									Entry<Integer, Integer> entry2) {

								int entry1Num = 0;
								int entry2Num = 0;

								if (entry1.getValue().equals(entry2.getValue())) {
									for (String s : seat) {
										if (s.equals(String.valueOf(entry2
												.getKey()))) {
											entry1Num = Integer.parseInt(s);
										} else if (s.equals(String
												.valueOf(entry1.getKey()))) {
											entry2Num = Integer.parseInt(s);
										}
									}

									return ((Integer) entry1Num)
											.compareTo((Integer) entry2Num);
								} else {
									return ((Integer) entry2.getValue())
											.compareTo((Integer) entry1
													.getValue());
								}

							}
						});

				for (Entry<Integer, Integer> byeGroupNum : entries) {
					// 食べ終わっているグループがいる場合、退店処理を実施
					byeStore(String.valueOf(byeGroupNum.getKey()));
					group[byeGroupNum.getKey()].eatFlug = true;
					// 待っているグループが入れるか確認(待ってるグループは自分より絶対後)
					for (int m = byeGroupNum.getKey() + 1; m < i; m++) {
						if (maxInputNum < m) {
							break;
						}
						if (group[m].waitFlug) {
							// 待っていたら入店処理
							// 入店処理で待ちの1グループ目が入れなかったら(enterStoreの戻り値falseなら)後続組もまつ
							if (enterStore(m, group[m].peopleCnt)) {
								group[m].waitTime += (group[byeGroupNum
										.getKey()].eatTime + 5)
										- group[byeGroupNum.getKey()].pastTime;
								group[m].pastTime += group[byeGroupNum.getKey()].pastTime
										- group[byeGroupNum.getKey()].eatTime;
								group[m].waitFlug = false;
								group[m].waitTime -= 5;
							} else {
								break;
							}
						}
					}
				}
			}

			// 新規来店グループがいるかどうか確認
			if ((maxInputNum) >= i) {
				group[i] = new Group();
				// グループ情報の設定
				setGroupInfo(group, i);
				// 前のグループが待ってなければ入店処理
				if (i != 0) {
					if (!group[i - 1].waitFlug) {
						if (!enterStore(i, group[i].peopleCnt)) {
							group[i].waitFlug = true;
						}
					} else {
						group[i].waitFlug = true;
					}
				} else {
					if (!enterStore(i, group[i].peopleCnt)) {
						group[i].waitFlug = true;
					}
				}
			}
			// 次グループが来る時間までカウント
			i++;
		}

		// 待ち時間を出力する
		for (int inputNum : input) {
			System.out.println(group[inputNum].waitTime);
		}
	}

	// 入店処理
	// 席が空いているかどうかチェック
	static boolean enterStore(int i, int currentPeopleCnt) {
		int emptySeat = 0;
		boolean okFlug = false;
		for (int n = 0; n < seat.length; n++) {
			if (okFlug) {
				break;
			}
			if ("_".equals(seat[n])) {
				emptySeat++;
				for (int m = n + 1; m < currentPeopleCnt + n; m++) {
					// 次の席がない場合はブレイク
					if (m == seat.length) {
						n = m;
						break;
					}
					if (!"_".equals(seat[m])) {
						n = m;
						emptySeat = 0;
						break;
					} else {
						emptySeat++;
					}
					if (currentPeopleCnt == emptySeat) {
						for (int l = m; l > m - currentPeopleCnt; l--) {
							seat[l] = String.valueOf(i);
						}
						okFlug = true;
						break;
					}
				}
			}
		}
		return okFlug;
	}

	// グループ情報の設定
	static void setGroupInfo(Group[] group, int i) {
		group[i].eatTime = 17 * (i % 2) + 3 * (i % 3) + 19;
		if (i % 5 == 1) {
			group[i].peopleCnt = 5;
		} else {
			group[i].peopleCnt = 2;
		}
	}

	// 退店＆入店処理実施
	static void byeAndEnterStore(List<Integer> byeGroupList, Group[] group,
			int maxInputNum, int currentGroupNum) {

		for (int n : byeGroupList) {

			// 食べ終わっているグループがいる場合、退店処理を実施
			byeStore(String.valueOf(n));
			group[n].eatFlug = true;
			// 待っているグループが入れるか確認(待ってるグループは自分より絶対後)
			for (int m = n + 1; m < currentGroupNum; m++) {
				if (maxInputNum < m) {
					break;
				}
				if (group[m].waitFlug) {
					// 待っていたら入店処理
					// 入店処理で待ちの1グループ目が入れなかったら(enterStoreの戻り値falseなら)後続組もまつ
					if (enterStore(m, group[m].peopleCnt)) {
						group[m].waitTime += (group[n].eatTime + 5)
								- group[n].pastTime;
						group[m].pastTime += group[n].pastTime
								- group[n].eatTime;
						group[m].waitFlug = false;
					} else {
						break;
					}
				}
			}

		}

	}

	// 退店
	static void byeStore(String n) {
		for (int i = 0; i < seat.length; i++) {
			if (seat[i].equals(n)) {
				seat[i] = emptySeatString;
			}
		}
	}

	static class Group {
		// 人数
		int peopleCnt = 0;
		// 食事時間
		int eatTime = 0;
		// 経過時間
		int pastTime = 0;
		// 食べ終わりフラグ(true：食べ終わった、false：食べ終わってない)
		boolean eatFlug = false;
		// 待ち時間
		int waitTime = 0;
		// 待ちフラグ(true：待ってる、false：待ってない)
		boolean waitFlug = false;
	}
}

Measured memory_bytes: 16956