#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=(int)1e6;
#define move asdasdasd
LL t[N+2],tt[N+2],p[N+2],b[N+2],u[N+2];
LL move[N+2],stay[N+2],buy[N+2];
int n;
LL tmp(){
	for(int i=1;i<=n;++i) tt[i]=b[i];
	for(int i=1;i<n;++i) t[i]=p[i];
	for(int i=n-1;i>=1;--i){
		t[i] -= min(tt[i+1],t[i]);
		LL x = min(tt[i],t[i]);
		t[i]-=x,tt[i]-=x;
	}
	LL sum=0;
	for(int i=1;i<=n;++i) sum+=t[i];
	return sum;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0) ; cout.tie(0);
//	freopen("main.inp","r",stdin);
	
	cin>>n;
	for(int i=1;i<=n;++i) cin>>b[i];
	for(int i=1;i<n;++i) cin>>p[i];
	for(int i=1;i<n;++i) cin>>u[i];
	
	LL sum=0;
	for(int i=1;i<n;++i) sum+=u[i];
	if (tmp()>sum){
		cout<<"NO";
		return 0;
	}
	LL need=tmp();
	cout<<"YES\n";
	cout<<need<<'\n';
	for(int i=n-1;i>=1;--i){
		move[i]=min(p[i],b[i+1]) , p[i]-=min(p[i],b[i+1]);
		LL x;
		x=min(need,u[i]);
		buy[i]=x,p[i]-=x,need-=x;
		x=min(p[i],b[i]);
		stay[i]=x,p[i]-=x,b[i]-=x;
		assert(p[i]==0);
	}
	for(int i=1;i<n;++i) cout<<stay[i]<<' '<<buy[i]<<' '<<move[i]<<'\n';
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |