import java.util.Scanner;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int n = in.nextInt();
// 1. 边界处理:输入0直接终止循环(符合样例结束规则)
if (n == 0) {
break;
}
// 2. ArrayList+HashMap+current数组逻辑
ArrayList<Integer> list = new ArrayList<>();//存储每组数据
Map<Integer, Integer[]> map = new HashMap<>();//统计每组数据
list.add(n);//添加每组数据
Integer[] current = new Integer[3];//创建当前组数据
current[0] = n;
int exchange = n / 3;//获取每组数据中每瓶汽水兑换的汽水数
int remain = n % 3 +
exchange;//获取每组数据中每瓶汽水兑换的剩余汽水数
current[1] = remain;
int exchange2 = current[1] / 3;
int remain2 = current[1] % 3 + exchange2;
current[2] = remain2;
map.put(n, current);//添加每组数据
// 3. 优化总汽水数计算逻辑(核心修复)
int totalDrink = exchange + exchange2; // 累加前两轮兑换数
int tempRemain = remain2;// 保存当前轮剩余汽水数
// 循环处理所有≥3的空瓶兑换(直到不足3个)
while (tempRemain >= 3) {
int tempExchange = tempRemain / 3;
totalDrink += tempExchange; // 累加本轮兑换数(之前遗漏)
tempRemain = tempRemain % 3 + tempExchange;// 保存当前轮剩余汽水数
}
// 4. 单独处理剩余2个空瓶的借瓶场景(循环外处理,避免提前终止)
if (tempRemain == 2) {
totalDrink++;
}
// 5. 输出当前组结果
System.out.print(totalDrink);
System.out.println();
}
// 6. 资源关闭:移到循环外,避免多组输入时提前关闭Scanner
in.close();
}
}