#include <iostream>
#include <cstdio>
#include <vector>
#include <map>
#include <queue>
#include <algorithm>
using namespace std;

typedef pair<int,int> P;
// (時刻,イベント,グループ番号)の組を表す.
// イベントは 離席 or 着席 を -1 or 1 で表す.
typedef pair< int , P > State;

// グループ番号 i の人数を返す.
int get_num(int i){
	return (i%5 == 1)? 5 : 2 ;
}

// グループ id が座れるかどうか返す. 座れる時はsekiの状態も変わる.
bool check(vector<int>& seki , int id ){
	int num = get_num(id);
	for(int i=0 ; i < 17 ; i++ ){
		if( num == 2 ){
			if( i+1 < 17 && seki[i] == -1 && seki[i+1] == -1 ){
				seki[i] = seki[i+1] = id;
				return true;
			}
		}else{
			if( i+4 < 17 && seki[i] == -1 && seki[i+1] == -1 && seki[i+2] == -1 && seki[i+3] == -1 && seki[i+4] == -1 ){
				seki[i] = seki[i+1] = seki[i+2] = seki[i+3] = seki[i+4] = id;
				return true;
			}
		}
	}
	return false;
}

// グループ id を離席させる. 離席するとsekiの状態も変わる.
void remove(vector<int>& seki , int id ){
	for(int i=0 ; i < 17 ; i++ ){
		if( seki[i] == id ) seki[i] = -1;
	}
}

int main(){
	// (時刻,イベント,グループ番号) の組を保持し, 時刻の早いほうから処理する.
	priority_queue< State , vector<State> , greater<State> > q;
	// (グループ番号,到着時刻) の組を保持し, 今並んでいる人々を表す.
	for(int i=0 ; i < 100 ; i++ ){
		q.push( State( 5*i , P(+1,i) ) );
	}
	// seki[i] := i番目の席に座っている人の番号, 座ってないときは -1
	vector<int> seki(17);
	for(int i=0 ; i < 17 ; i++ ) seki[i] = -1;
	
	// que := 待ち行列, (グループ番号を保持する)
	queue<int> que;
	
	// wait[i] := グループ i の待ち時間
	int wait[100] = {0}; 
	
	while( !q.empty() ){
		int t = q.top().first;
		int event = q.top().second.first;
		int id = q.top().second.second;
		q.pop();
		
		/*printf("%3d : ", t);
		for(int i=0 ; i < 17 ; i++ ){
			if( seki[i] == -1 ){
				printf("__");
			}else{
				printf("%2d", seki[i] );
			}
		}*/
		
		
		// グループ id が着席するとき 
		if( event == 1 ){
			
			// 行列があるとき
			if( !que.empty() ){
				que.push( id );
				
				//printf(": %d is wait! \n", id);
			}else if( check( seki , id ) ){// 座れるかチェック, 座れなかったら行列に並ぶ.
				int eat_time = 17 * (id%2) + 3 * (id%3) + 19;
				q.push( State( t + eat_time , P(-1,id) ) );
				
				//printf(": %d is sit! \n", id);
			}else{
				que.push( id );
				
				//printf(": %d is wait! \n", id);
			}
		}else{ // グループ id が離席するとき
			remove( seki , id );
			//printf(": %d is leave! ", id);
			// 行列の先頭の人が座れるかチェック
			bool flag = false;
			do{
				if( que.empty() ) break;
				flag = false;
				int id_2 = que.front();
				if( check( seki , id_2 ) ){
					flag = true;
					int eat_time = 17 * (id_2%2) + 3 * (id_2%3) + 19;
					q.push( State( t + eat_time , P(-1,id_2) ) );
					wait[id_2] = t - id_2 * 5;
					que.pop();
					//printf("&& %d is sit! ", id_2);
				}
			}while( flag );
			//puts("");
		}
	}
	int n;
	while( cin >> n ){
		cout << wait[n] << endl;
	}
}