import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Main m = new Main();
		m.run();
	}

	Scanner sc = new Scanner(System.in);

	public void run() {
		for (;;) {
			int n = sc.nextInt();
			if (n == 0) {
				break;
			}
			System.out.println(solve(n));
		}
	}

	// ?°????????????????????§£???
	private int solve(int n) {
		/*
		 * 1,2,3,4,5,6,7,8,9...
		 * ??¨??£????????°???????¨???????????????????????????§?????????
		 * 
		 * [1,2],3,4,5,6,7,8,9
		 * 1,[2,3],4,5,6,7,8,9
		 * 1,[2,3,4],5,6,7,8,9
		 * ????????????????????????????????¨??????????????????????????????????????????????????¢?????????????????¨????????????
		 */
		
		// ????????????????????°???
		int right = 2;
		// ????????????????????°???
		int left = 1;
		// ?????? ([1,2],3,4,5,6,7,8...)????????????3
		int sum = 3;
		
		/*
		 * ??????????????????????????????????????? => ?????????????????????????????°???????¢???????
		 * ???
		 * 1,2,3,4,[5,6],7,8,9 = 18 ???????????????????????????????¢?????????¨
		 * 1,2,3,4,[5,6,7],8,9 = 26
		 * 
		 * ??????????????????????????????????????? => ????§?????????????????????????????????°????????????
		 * 
		 * ???????????????????±???????????????°??????????°?????????¨??????????????????????????????
		 * ???????????????????±???????????????°???????????§????????¨??????????????????????????????
		 * ??¨???????????¨??°?????????????????????????????????????????????????????????????????????
		 */
		
		int result = 0;
		for(;right<n;){ 
			// ???????????????????????????????±?????????°?????????????????°????????????+1
			if(sum == n){
				result++;
			}
			if(sum <= n){
				// ???????????????????±???????????????°??????????°?????????¨??????????????????????????????
				// ????????????????????¨??????????????????????????°?????????????????\????????°???????¢????????????§???
				// sum += right+1; right++; 
				sum += ++right;
				
				// ??????????????¨?±???????????????°?????????????????¨??????????¬???????????????¢???????????????????¬??????¨???????????????
				// (????????§?????????????????¨???????????????????????£????????????)
			}else{
				// ???????????????????±???????????????°???????????§????????¨??????????????????????????????
				// ????????????????????¨???????????????????????????????????????????????°??????????????????
				// sum -= left; left++; 
				sum -= left++;
			}
		}
		// ??????????????????????±?????????°??????????????????????????????
		// ??????2??\??????????????§
		// ?????????+(n-2)+(n-1)+n = n 
		// ??¨???????????¨??????????????????
		return result;
	}
	
	// ?°???????????????£?¶???????????????????????????°?????????????????§???????????¢??????????????§??????
	// 1. ???????????????????????¶???????????????????????????????????????????????????
	// 2. ????????????????????´????????????????¨?????????????????????§????????°?????????????¨????????????????????????????
	// ???????????£???????????°???O(N)??§(???????´???°??????????????????????????§)????¨???????????????¨?????§????????????
	
	// ?±???¨???????????¨??§???????????????:
	// ????????????????????????????????????????????????????????§?????????????????§??¨?????????????????£?¶???????????????????????????????
	// ???????????°???????????????????????????????????¨????????£?¶???????n????????\????????????????????¨?????£?????¨???????????¢????´??????¨?????????????????????value???????????°????????????cost??¨????????°?????????
	class SubClass{
		class Datum{
			int value;
			int cost;
		}
		List<Datum> maxValue(List<Datum> data, int maxCost){
			Iterator<Datum> left = data.iterator();
			Iterator<Datum> right = data.iterator();
			
			int i= 0;
			int j = 0;
			int sumValue = 0;
			int sumCost = 0;
			int max = -1;
			int max_i = -1;
			int max_j = -1;
			for(;right.hasNext();){
				if(sumCost <= maxCost){
					if(sumValue > max){
						max_i = i;
						max_j = j;
						max = sumValue;
					}
					Datum d = right.next();
					sumValue += d.value;
					sumCost += d.cost;
				}else{
					Datum d = left.next();
					sumValue -= d.value;
					sumCost -= d.cost;
				}
			}
			return data.subList(max_i, max_j);
		}
	}

}

Measured memory_bytes: 26260