#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define rep(i,j,k) for(int i = (j); i <= (k); i++)
typedef unsigned long long ULL;
int main()
{
int n; ULL m;
scanf("%d%llu", &n, &m);
int* a = (int*)malloc(n * sizeof(int));
memset(a, 0, n * sizeof(int));
rep(i, 0, n - 1)
scanf("%d", &a[i]);
for (int i = 0; i < n; i++)
for (int j = 0; j < n - i - 1; j++)
if (a[j] > a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
rep(i, 0, n - 1)
printf(" %d", a[i]);
int occupy = 0;
ULL ambition = 0;
int flag = 0;
rep(i, 1, n)
{
ambition += a[i - 1] * (n - occupy);
if (ambition > m)
{
flag = 1;
break;
}
occupy++;
}
if (flag)
printf("Yes");
else
printf("No");
return 0;
}