#include<cstdio>
#include<iostream>
#include<cstring>
#define INF 1000000000
using namespace std;
int k,n,m;
long long dp[51][150][51][51],mm[51][150][51];
int c[51],v[51],pr=-1;
long long solve(int k,int B,int prev,int cnt)
{
if(B<0)return -INF;
if(B==0 and k>0)return -INF;
if(k==0)return 0;
if(dp[k][B][prev][cnt]!=-1)return dp[k][B][prev][cnt];
long long ans=-INF,idx=-1;
for(int i=0;i<n;i++)
{
if(prev!=i)
{
int tmp=solve(k-1,B-c[i],i,1);
if(tmp!=-INF)
{
if(tmp+v[i]>ans)
{
ans=tmp+v[i];
idx=i;
}
else if(tmp+v[i]==ans)
{
if((v[i]-c[i])>(v[idx]-c[idx]))
idx=i;
}
}
}
else
{
int val=v[i]/2;
if(cnt>1)val=0;
int tmp=solve(k-1,B-c[i],i,cnt+1);
if(tmp!=-INF)
{
if(tmp+val>ans)
{
ans=tmp+val;
idx=i;
}
}
}
}
mm[k][B][prev]=idx;
pr=idx;
return dp[k][B][prev][cnt]=ans;
}
void recurse(int k,int B,int pre)
{
if(k==0)return;
else
{
int x=mm[k][B][pre];
recurse(k-1,B-c[x],x);
cout<<x+1<<" ";
}
}
int main()
{
cin>>k>>n>>m;
while(k|n|m)
{
memset(dp,-1,sizeof dp);
memset(mm,-1,sizeof mm);
long long ans=-INF;
for(int i=0;i<n;i++)
{
cin>>c[i]>>v[i];
v[i]<<=1;
}
double x=solve(k,m,-1,0);
if(x<=0)
cout<<"0.0"<<endl;
else
{
printf("%.1lf\n",x/2);
recurse(k-1,m-c[pr],pr);
cout<<pr+1;
}
cout<<endl;
cin>>k>>n>>m;
}
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxpb3N0cmVhbT4KI2luY2x1ZGU8Y3N0cmluZz4KI2RlZmluZSBJTkYgMTAwMDAwMDAwMAp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgayxuLG07CmxvbmcgbG9uZyBkcFs1MV1bMTUwXVs1MV1bNTFdLG1tWzUxXVsxNTBdWzUxXTsKaW50IGNbNTFdLHZbNTFdLHByPS0xOwpsb25nIGxvbmcgc29sdmUoaW50IGssaW50IEIsaW50IHByZXYsaW50IGNudCkKewoJaWYoQjwwKXJldHVybiAtSU5GOwoJaWYoQj09MCBhbmQgaz4wKXJldHVybiAtSU5GOwoJaWYoaz09MClyZXR1cm4gMDsKCWlmKGRwW2tdW0JdW3ByZXZdW2NudF0hPS0xKXJldHVybiBkcFtrXVtCXVtwcmV2XVtjbnRdOwoJbG9uZyBsb25nIGFucz0tSU5GLGlkeD0tMTsKCWZvcihpbnQgaT0wO2k8bjtpKyspCgl7CgkJaWYocHJldiE9aSkKCQl7CgkJCWludCB0bXA9c29sdmUoay0xLEItY1tpXSxpLDEpOwoJCQlpZih0bXAhPS1JTkYpCgkJCXsKCQkJCWlmKHRtcCt2W2ldPmFucykKCQkJCXsKCQkJCWFucz10bXArdltpXTsKCQkJCWlkeD1pOwoJCQkJfQoJCQkJZWxzZSBpZih0bXArdltpXT09YW5zKQoJCQkJewoJCQkJCWlmKCh2W2ldLWNbaV0pPih2W2lkeF0tY1tpZHhdKSkKCQkJCQlpZHg9aTsKCQkJCX0KCQkJfQoJCX0KCQllbHNlCgkJewoJCQlpbnQgdmFsPXZbaV0vMjsKCQkJaWYoY250PjEpdmFsPTA7CgkJCWludCB0bXA9c29sdmUoay0xLEItY1tpXSxpLGNudCsxKTsKCQkJaWYodG1wIT0tSU5GKQoJCQl7CgkJCQlpZih0bXArdmFsPmFucykKCQkJCXsKCQkJCWFucz10bXArdmFsOwoJCQkJaWR4PWk7CgkJCQl9CgkJCX0KCQl9Cgl9CgltbVtrXVtCXVtwcmV2XT1pZHg7Cglwcj1pZHg7CglyZXR1cm4gZHBba11bQl1bcHJldl1bY250XT1hbnM7Cn0Kdm9pZCByZWN1cnNlKGludCBrLGludCBCLGludCBwcmUpCnsKICAgIGlmKGs9PTApcmV0dXJuOwogICAgZWxzZQogICAgewogICAgICAgIGludCB4PW1tW2tdW0JdW3ByZV07CiAgICAgICAgcmVjdXJzZShrLTEsQi1jW3hdLHgpOwogICAgICAgICBjb3V0PDx4KzE8PCIgIjsKICAgIH0KfQppbnQgbWFpbigpCnsKCWNpbj4+az4+bj4+bTsKCXdoaWxlKGt8bnxtKQoJewoJCW1lbXNldChkcCwtMSxzaXplb2YgZHApOwoJCW1lbXNldChtbSwtMSxzaXplb2YgbW0pOwoJCWxvbmcgbG9uZyBhbnM9LUlORjsKCQlmb3IoaW50IGk9MDtpPG47aSsrKQoJCXsKCQkJY2luPj5jW2ldPj52W2ldOwoJCQl2W2ldPDw9MTsKCQl9CgkJZG91YmxlIHg9c29sdmUoayxtLC0xLDApOwoJCWlmKHg8PTApCgkJY291dDw8IjAuMCI8PGVuZGw7CgkJZWxzZQoJCXsKCQkJcHJpbnRmKCIlLjFsZlxuIix4LzIpOwogICAgICAgICAgICByZWN1cnNlKGstMSxtLWNbcHJdLHByKTsKICAgICAgICAgICAgY291dDw8cHIrMTsKICAgIH0KICAgIGNvdXQ8PGVuZGw7CgkJY2luPj5rPj5uPj5tOwoJfQp9