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();
    }
}