QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 32 MB Total points: 100

#11881. Passage

統計

A team of Byteholers has set out on a trip into Bytemountains. Unfortunately they have caused an avalanche and now have to escape it. There is an old cable-bridge over a chasm ahead of them. They have to cross the bridge as quickly as possible. The Byteholers are intimate friends and therefore have decided that either all or none of them shall survive.

The bridge is old and worn-out, so it won't withstand a great weight. The total weight of Byteholers on the bridge at any time cannot exceed some limit. Furthermore it is a cable-bridge, so the Byteholers have to cross it in groups. Next group may enter it only after the previous one has left.

It is known how much time each Byteholer needs to cross the bridge. A crossing time of a group is the crossing time of the slowest member of the group. Total crossing time of all Byteholers is the sum of crossing times of all groups. Obviously it depends on the manner in which they split into groups.

Be their saviour! Calculate the minimal crossing time of all the Byteholers.

Write a programme that:

  • reads the description of the bridge and Byteholers from standard input,
  • determines the minimal total crossing time of all Byteholers,
  • writes the determined time to the standard output.

Input

The first line of the standard input contains two integers separated by a single space: $w$ - defining the maximal weight allowed for the bridge ($100 ≤ w ≤ 400$) and $n$ - the number of Byteholers ($1 ≤ n ≤ 16$). In each of the following $n$ lines there are two integers separated by a single space, describing successive Byteholers: $t$ - the time needed by the Byteholer to cross the bridge ($1 ≤ t ≤ 50$) and $w$ - the weight of the Byteholer ($10 ≤ w ≤ 100$).

Output

Your programme should write a single integer in the first and only output line. The integer should denote the minimal total crossing time of all Byteholers.

Example

Input

100 3
24 60
10 40
18 50

Output

42
About Issues

We understand that our problem archive is not perfect. If you find any issues with the problem, including the statement, scoring configuration, time/memory limits, test cases, etc.

You may use this form to submit an issue regarding the problem. A problem moderator will review your issue and proceed it properly.

STOP! Before you submit an issue, please READ the following guidelines:

  1. This is not a place to publish a discussion, editorial, or requests to debug your code. Your issue will only be visible by you and problem moderators. Other users will not be able to view or reply your issues.
  2. Do not submit duplicated issues. If you have already submitted one, please wait for an moderator to review it. Submitting multiple issues will not speed up the review process and might cause your account to be banned.
  3. Issues must be filed in English or Chinese only.
  4. Be sure your issue is related to this problem. If you need to submit an issue regarding another problem, contest, category, etc., you should submit it to the corresponding page.

Active Issues 0

No issues in this category.

Closed/Resolved Issues 0

No issues in this category.