#include <cstdio>
#include <algorithm>
using std::max;
int f[10005], k[10005], m[10005], in[10005][10005];
char c;
void read(int &x)
{
x = 0;
while ((c = getchar()) != EOF)
{
if (c == ' ' || c == '\n') return ;
x = (x << 1) + (x << 3) + (c ^ 48);
}
return ;
}
int main()
{
int v, n, c;
long long sum = 0;
read(v);
read(n);
read(c);
for (int i = 1; i <= n; i++)
{
read(k[i]);
read(m[i]);
sum += k[i];
}
if (sum < v)
{
printf("Impossible");
return 0;
}
for (int i = 1; i <= n; i++)
for (int j = c; j >= m[i]; j--)
f[j] = max(f[j], f[j - m[i]] + k[i]);
for(int i = 0; i <= c; i++)
{
if(f[i] >= v)
{
printf("%d", c - i);
return 0;
}
}
printf("Impossible");
return 0;
}