#include<iostream>
#define MAX(a,b) a>b?a:b
#define p(a) printf("%d\n",a)
int n,money,kind,a[11][102],p[101],v[101],f[11][10001];
int main()
{int ans,i,j,k,x;
// freopen("1.txt","r",stdin);freopen("2.txt","w",stdout);
scanf("%d%d%d",&n,&money,&kind);
for(i=1;i<=n;i++){
scanf("%d%d%d",&x,&p[i],&v[i]);
if(p[i]<=money)a[x][++a[x][0]]=i;
}
memset(f,128,sizeof(f));
f[0][0]=0;
for(i=1;i<=kind;i++)
for(j=1;j<=a[i][0];j++){
x=a[i][j];
for(k=money;k>=p[x];k--){
if(f[i-1][k-p[x]]+v[x]>=0&&f[i-1][k-p[x]]+v[x]>f[i][k])f[i][k]=f[i-1][k-p[x]]+v[x];
if(f[i][k-p[x]]+v[x]>=0&&f[i][k-p[x]]+v[x]>f[i][k])f[i][k]=f[i][k-p[x]]+v[x];
}
}
for(ans=0,i=0;i<=money;i++)ans=MAX(ans,f[kind][i]);
ans==0?printf("Impossible"):printf("%d",ans);
return 0;
}