//所有头文件:
//1.首先是最方便的万能头文件,顾名思义,可以将其理解为父亲头文件(除了本篇第14个头文件)都包含)
//(虽然方便了懒人,但是缺点也很明显--这一头文件很占用内存):
#include<bits/stdc++.h>
//2.接着也是比较常用的,作用于数据流输入输出 cin>>和cout<<:
#include<iostream>
//3.然后是各种算法的头文件(例如sort函数等):
#include<algorithm>
//4.关于数学函数的头文件(例如max( ),min( ),abs( )等)(从C语言中的math.h继承而来):
#include<cmath>
//5.string字符串头文件:
#include<cstring>
//6.接着是C语言的头文件:
#include<cstdio>
//7.普通队列(只能一边进一边出)(先进先出)的头文件:
#include<queue>
//8.双向队列(两边都可以进出)(先进先出)的头文件:
#include<deque>
//9.栈(先进后出,后进先出)的头文件:
#include<stack>
//10.列表的头文件:
#include<list>
//11.动态数组(不需知道该数组的数量)的头文件:
#include<vector>
//12.图的头文件:
#include<map>
//13.集合(内部自动有序且不含重复元素)的头文件:
#include<set>
//14.控制电脑或小黑框头文件(不包含在万能头件):
#include<windows.h>
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,val[105];
vector<pair<int,int>> ve[105];
int dfs(int st,int l,int last)
{
int res=val[st]*l;
for(auto [v,w]:ve[st])
{
if(v==last) continue;
res+=dfs(v,l+1,st);
}
return res;
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;++i)
{
int w,u,v;
cin>>w>>u>>v;
val[i]=w;
if(u!=0) ve[i].push_back({u,w}),ve[u].push_back({i,w});
if(v!=0) ve[i].push_back({v,w}),ve[v].push_back({i,w});
}
int ans=INT64_MAX;
for(int i=1;i<=n;++i)
{
ans=min(dfs(i,0,i),ans);
}
cout<<ans;
return 0;
}
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,x,y,a[500005],dp[500005],p[500005];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>x>>y;
for(int i=1;i<=n;++i)
{
cin>>a[i];
}
sort(a+1,a+n+1,greater<int>());
for(int i=1;i<=n;++i)
{
p[i]=p[i-1]+a[i];
}
for(int i=1;i<=n;++i)
{
if(i>=2)
{
dp[i]=max(dp[i],dp[i-2]+a[i-1]);
}
if(i>=x+y)
{
dp[i]=max(dp[i],dp[i-x-y]+p[i-y]-p[i-x-y]);
}
}
int res=INT64_MIN;
for(int i=n-x-y+1;i<=n;++i)
{
res=max(res,dp[i]);
}
cout<<max(res,dp[n]);
return 0;
}