#include<bits/stdc++.h>
using namespace std;
struct qwert{
int w,v;
}a[13][31];
int V,N,T;
int cnt[13],f[203];
int main(){
cin>>V>>N>>T;
for(int i=1;i<=N;i++){
int x_1,x_2,x_3;
cin>>x_1>>x_2>>x_3;
a[x_3][++cnt[x_3]].w=x_1;
a[x_3][cnt[x_3]].v=x_2;
}
for(int i=1;i<=T;i++){
for(int k=V;k>=0;k--){
for(int j=1;j<=cnt[i];j++){
if(k>=a[i][j].w)f[k]=max(f[k],f[k-a[i][j].w]+a[i][j].v);
}
}
}
cout<<f[V];
return 0;
}
//100%
//待纠错
#include<bits/stdc++.h>
using namespace std;
struct qwert{
int w,v;
}a[13][31];
int V,N,T;
int cnt[13],f[13][203];
int main(){
cin>>V>>N>>T;
for(int i=1;i<=N;i++){
int x_1,x_2,x_3;
cin>>x_1>>x_2>>x_3;
a[x_3][++cnt[x_3]].w=x_1;
a[x_3][cnt[x_3]].v=x_2;
}cout<<endl;
for(int i=1;i<=T;i++){
for(int k=V;k>=0;k--){
for(int j=1;j<=cnt[i];j++){
if(k>=a[i][j].w)f[i][k]=max(f[i-1][k],f[i-1][k-a[i][j].w]+a[i][j].v);
else f[i][k]=max(f[i-1][k],f[i][k]);
}
}
for(int o=0;o<=V;o++){
cout<<f[i][o]<<" ";
}cout<<endl;
}
cout<<f[T][V];
return 0;
}
//f[i][j]->前i组总重在j内的最大价值
//未完成
#include<bits/stdc++.h>
using namespace std;
struct pos{
int x,y;
};
int n,m;
int a[203][203];
bool vis[203][203];
int tx[4]={1,0,-1,0};
int ty[4]={0,1,0,-1};
void bfs(int bx,int by){
queue<pos> q;
while(!q.empty())q.pop();
vis[bx][by]=1;
q.push({bx,by});
while(!q.empty()){
pos c=q.front();q.pop();
for(int i=0;i<4;i++){
int nx=c.x+tx[i];
int ny=c.y+ty[i];
if(nx>0&&nx<=n&&ny>0&&ny<=m&&!vis[nx][ny]&&a[nx][ny]!=0){
vis[nx][ny]=1;
q.push({nx,ny});
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
char ch;
cin>>ch;
a[i][j]=ch-'0';
}
}
int sum=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(!vis[i][j]&&a[i][j]!=0){
bfs(i,j);
sum++;
}
}
}
cout<<sum;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
struct pos{
int x,y,s;
};
int n1,n2,m1,m2;
bool vis[103][103];
int tx[12]={2,2,-2,-2,2,2,-2,-2,1,1,-1,-1};
int ty[12]={-2,2,-2,2,1,-1,1,-1,2,-2,2,-2};
void bfs(int bx,int by){
queue<pos> q;
memset(vis,0,sizeof(vis));
while(!q.empty())q.pop();
vis[bx][by]=1;
q.push({bx,by,0});
while(!q.empty()){
pos c=q.front();q.pop();
if(c.x==1&&c.y==1){
cout<<c.s<<endl;
break;
}
for(int i=0;i<12;i++){
int nx=c.x+tx[i];
int ny=c.y+ty[i];
if(nx>0&&nx<=100&&ny>0&&ny<=100&&!vis[nx][ny]){
vis[nx][ny]=1;
q.push({nx,ny,c.s+1});
}
}
}
}
int main(){
cin>>n1>>n2>>m1>>m2;
bfs(n1,n2);
bfs(m1,m2);
return 0;
}