Problem:
Discounts of Buckwheat

Aizu is famous for its buckwheat. There are many people who make buckwheat noodles by themselves.

One day, you went shopping to buy buckwheat flour. You can visit three shops, A, B and C. The amount in a bag and its unit price for each shop is determined by the follows table. Note that it is discounted when you buy buckwheat flour in several bags.

Shop A

Shop B

Shop C

Amount in a bag

200g

300g

500g

Unit price for a bag (nominal cost)

380 yen

550 yen

850 yen

Discounted units

per 5 bags

per 4 bags

per 3 bags

Discount rate

reduced by 20 %

reduced by 15 %

reduced by 12 %

For example, when you buy 12 bags of flour at shop A, the price is reduced by 20 % for 10 bags, but not for other 2 bags. So, the total amount shall be (380 × 10) × 0.8 + 380 × 2 = 3,800 yen.

Write a program which reads the amount of flour, and prints the lowest cost to buy them. Note that you should buy the flour of exactly the same amount as the given input.

Input

The input consists of multiple datasets. For each dataset, an integer a (500 ≤ a ≤ 5000, a is divisible by 100) which represents the amount of flour is given in a line.

The input ends with a line including a zero. Your program should not process for the terminal symbol. The number of datasets does not exceed 50.

Output

For each dataset, print an integer which represents the lowest cost.

Sample Input

500
2200
0

Output for the Sample Input

850
3390

Solution in Haskell (judge verdict: Accepted)

main = do
    amount <- readLn
    if amount == 0 then return ()
                   else do
                       print $ searchMinimumPriceOf amount
                       main

searchMinimumPriceOf :: Int -> Int
searchMinimumPriceOf = minimum.map totalPrice.searchComb

searchComb :: Int -> [(Int,Int,Int)]
searchComb p = [(x,y,z) | x <- [0..25], y <- [0..17], z <- [0..10], 200*x+300*y+500*z == p]

totalPrice :: (Int,Int,Int) -> Int
totalPrice (x,y,z) = shopAprice x + shopBprice y + shopCprice z

shopAprice :: Int -> Int
shopAprice = shopPrice 'a'
shopBprice = shopPrice 'b'
shopCprice = shopPrice 'c'

shopPrice :: Char -> Int -> Int
shopPrice  s = priceCalc pa pp du dr
    where [pa,pp,du,dr] = case s of
                            'a' -> [200,380,5,20]
                            'b' -> [300,550,4,15]
                            'c' -> [500,850,3,12]

priceCalc packAmount packPrice discountUnit disCountRate amount =
    if amount `mod` discountUnit == 0 then amount `div` discountUnit * discountUnit * packPrice * (100 - disCountRate) `div` 100
                                      else amount `div` discountUnit * discountUnit * packPrice * (100 - disCountRate) `div` 100 + amount `mod` discountUnit * packPrice