#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 3000005;
int main()
{
  int n;
  ll k;
  ll dp[4][N] = {0};
  cin >> n >> k;
  dp[0][0] = 1;
  for (int i = 0; i < 3; i ++ ) 
  {
    for (int j = 0; j <= i * n; j ++ ) 
    {
      //只在1~n之间加上
      dp[i + 1][j + 1] += dp[i][j];
      dp[i + 1][j + n + 1] -= dp[i][j];      
    }
    for (int j = 1; j <= (i + 1) * n; j ++ )
      dp[i + 1][j] += dp[i + 1][j - 1];
  }
  int x;
  for (int i = 3; i <= 3 * n; i ++ )
    if (k <= dp[3][i]) {x = i; break;}
    else k -= dp[3][i];
  for (int i = 1; i <= n; i ++ )
  {
    //现在i是确定的，那么j和k就只会在l到r这个区间变换
    //而且，变化的个数也就是r-1+1个
    int l = max(1, x - n - i);
    int r = min(n, x - i - 1);
    if (l > r) continue;
    if (k > r - l + 1) {k -= r - l + 1; continue;}
    int y = l + k - 1;
    int z = x - i - y;
    cout << i << " " << y << " " << z << endl; 
    return 0;
  }
}
#include<bits/stdc++.h>
#define pb push_back
#define pf push_front
#define clr(x) memset(x, 0, sizeof(x))
#define all(a) a.begin(),a.end()
#define s second
#define f first
#define forn(i, a,b) for(int i = int(a); i < int(b); ++i)
#define forn_r(i, b, a) for(int i = int(b); i > int(a); i--)
#define trav(a,x) for (auto& a : x)
#define printArray(array, length) for(int i = 0; i < length; i++) cout<< array[i] << (i == length - 1 ? '\n' : ' '); 
#define print(x) cout << x << '\n'
#define print2(x, y) cout << x << ' ' << y << '\n'
#define debug(x) cout << #x << "=" << x << endl
#define debug2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
template<class T> bool chmin(T& a, const T& b) { return b < a ? a = b, 1 : 0; }
template<class T> bool chmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; }

using namespace std;
typedef long long ll; 
const int INF = INT_MAX;
const ll LNF  = LONG_LONG_MAX;
inline int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
inline ll  gcd(ll  a, ll  b) { return b ? gcd(b, a % b) : a; }
inline int lcm(int a, int b) { return a * b / gcd(a, b); }


bool test(){
	int a[4];
		cin>>a[0]>>a[1]>>a[2]>>a[3];
		int k=1<<4;
		//debug(k);
		forn(i,0,k){
			int sum1=0,sum2=0;
			forn(j,0,4){
				if(1<<j&i){
					sum1+=a[j];
				}
				else{
					sum2+=a[j];
				}
			}
			//debug2(sum1,sum2);
			if(sum1==sum2){
				return 1;
			}
		}
		return 0;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int t =1;
   // cin>>t;
    while(t--){
    	if(test()){
    		print("Yes");
    	}
    	else{
    		print("No");
    	}
  		
    }
    return 0;
}