/* paiza POH! Lite
 * result:
 * http://p...content-available-to-author-only...a.jp/poh/kirishima/result/8d539fbf10fe2f3560b8f51e51c1404f
 * author: Leonardone @ NEETSDKASU
 */
#include <stdio.h>
#include <stdlib.h>

typedef struct _data {
	int q;
	int r;
	double p;
	int f;
} DATA, *PDATA;

int sort_p(void *a, void *b) {
	PDATA pa = (PDATA)a;
	PDATA pb = (PDATA)b;
	double d = pa->p - pb->p;
	if (d > 0) {
		return 1;
	} else if (d < 0) {
		return -1;
	} else {
		return 0;
	}
}

int sort_q(void *a, void *b) {
	PDATA pa = (PDATA)a;
	PDATA pb = (PDATA)b;
	return pb->q - pa->q;
}


DATA data[50];

int main(void) {
	
	int m, n;
	PDATA pdata = data;
	int i, j, k;
	int sum_q, sum_r;
	
	scanf("%d", &m);
	scanf("%d", &n);
	
	for (i = 0; i < n; i++) {
		scanf("%d %d", &pdata->q, &pdata->r);
		pdata->p = (double)pdata->r / (double)pdata->q;
		pdata++;
	}
	
	qsort(data, n, sizeof(DATA), sort_p);
	
	sum_q = sum_r = 0;
	pdata = data;
	for (i = 0; i < n; i++) {
		sum_q += pdata->q;
		sum_r += pdata->r;
		pdata->f = 1;
		if (sum_q >= m) {
			break;
		}
		pdata++;
	}
	
	qsort(data, i + 1, sizeof(DATA), sort_q);
	
	sum_q = sum_r = 0;
	pdata = data;
	for (i = 0; i < n; i++) {
		sum_q += pdata->q;
		sum_r += pdata->r;
		pdata->f = 1;
		if (sum_q >= m) {
			break;
		}
		pdata++;
	}
	
	printf("%d\n", sum_r);
	
	return 0;
}
