// 打表法
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
ArrayList<Integer> arrayList = new ArrayList<>();
int number = Integer.valueOf(scan.nextLine().trim());
while (number != 0) {
arrayList.add(number);
number = Integer.valueOf(scan.nextLine().trim());
}
int[] ans = new int[arrayList.size()]; // 定义一个整型数组,用于存放最终的输出结果
int index = 0; // 定义一个整型变量,用于存放当前的下标
for (int n : arrayList) {
ans[index++] = n / 2;
// ans[index++] = process(n);
}
for (int num : ans) {
System.out.println(num);
}
}
// 以下方法是最原始的解题方法。当我们使用以下方法解出该题后,可以通过观察结果,找到规律
public static int process(int n) {
if (0 == n || 1 == n) { // 如果初始的空瓶子数为 0 或者为 1,那么别想了,你喝不到任何一瓶可乐
return 0;
}
int ans = 0; // 定义一个整型变量,用于存放最终能够喝到多少瓶可乐
int sendBack; // 定义一个整型变量,用于存放需要返还多少个可乐瓶
if (n % 3 == 0) { // 如果当前拥有的空瓶子数被 3 整除,那么我们不需要向商店老板借任何一个空瓶子
sendBack = 0;
} else { // 否则,我们需要向商店老板借空瓶子
sendBack = 3 - (n % 3);
}
while ((n + sendBack) / 3 >= sendBack) { // 如果我向老板借 sendBack 个空的可乐瓶,然后我能兑换的可乐数的瓶数大于需要还给老板的瓶子数 sendBack
ans += (n + sendBack) / 3; // 我可以喝到这么多瓶可乐
n = ((n + sendBack) / 3) - sendBack; // 最终产生的空瓶子数应该要减去我们向老板借的空瓶子数
if (0 == n || 1 == n) { // 如果此时空瓶子数为 0 或者 1,退出循环
break;
}
if (n % 3 == 0) {
sendBack = 0;
} else {
sendBack = 3 - (n % 3);
}
}
return ans;
}
}