import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		int dp[]=new int[n+5];//1 5 7
		//1 2 3 4  1 2 1 2 3  2  3  2  4  5   2  3  4  5  6   2  
		//1 2 3 4  5 6 7 8 9  10 11 12 13 14  15 16 17 18 19  20
		for (int i = 1; i <= 4; i++) {
			dp[i]=i;
		}
		dp[5]=1;
		dp[6]=2;
		dp[7]=1;
		for (int i = 8; i < n+1; i++) {
			dp[i]=Math.min(dp[i-1]+1, dp[i-5]+1);
			dp[i]=Math.min(dp[i], dp[i-7]+1);
		}
		System.out.println(dp[n]);

	}

}

这题只需要考虑三种情况,求它们的最小值,如果要求dp[i],分别求出dp[i-1]+1,dp[i-5]+1,dp[i-7]+1的值,然后求它们的最小值,这就是状态转移方程。初始化就是把dp[1]到dp[7]全部初始化赋值过去。然后这道题就做出来了