### Problem Statement

As a serious strategy-games player, you know how important it is to gather enough food for your army before any invasion. Because of this, you decided to collect at least neededFood units of food for your soldiers.

At the beginning, you have n workers to help you. In a single round, each of your workers gathers one unit of food. At the end of each round, you can trade some of your food for new workers. Hiring a single new worker costs price units of food. You can purchase any amount of new workers as long as you have the food to pay for it.

Return the minimum number of rounds you need to gather at least neededFood units of food.

### Definition

 Class: FoodCollecting Method: gather Parameters: int, int, int Returns: int Method signature: int gather(int neededFood, int n, int price) (be sure your method is public)

### Constraints

-neededFood, n and price will each be between 1 and 1000, inclusive.

### Examples

0)

 `10` `2` `1`
`Returns: 4`
 Round 1: Gather 2 units of food. Hire a new worker. Round 2: Gather 3 units of food. Now you have 4 units. Round 3: Gather 3 units of food. Now you have 7 units. Round 4: Gather 3 units of food. Now you have 10 units - enough for your army.
1)

 `22` `4` `1`
`Returns: 4`
 Round 1: Gather 4 units of food. Hire 4 new workers. Round 2: Gather 8 units of food. Hire 7 new workers. Round 3: Gather 15 units of food. Now you have 16 units. Round 4: Gather 15 units of food. Now you have 31 units - enough for your army.
2)

 `60` `5` `6`
`Returns: 11`
3)

 `500` `249` `1000`
`Returns: 3`

#### Problem url:

http://www.topcoder.com/stat?c=problem_statement&pm=8239

#### Problem stats url:

http://www.topcoder.com/tc?module=ProblemDetail&rd=10801&pm=8239

Rydberg

#### Testers:

PabloGilberto , brett1479 , Olexiy , ivan_metelsky

#### Problem categories:

Simple Math, Simple Search, Iteration