Design a program to accept a day number (between 1 and 366), year (in 4 digits) from the user to generate and display the corresponding date. Also, accept N (1 <= N <= 100) from the user to compute and display the future date corresponding to ‘N’ days after the generated date. Display an error message if the value of the day number, year and N are not within the limit or not according to the condition specified.

Test your program with the following data and some random data:

**Example 1:**

INPUT:

DAY NUMBER: 255

YEAR: 2018

DATE AFTER (N DAYS): 22

OUTPUT:

DATE: 12TH SEPTEMBER, 2018

DATE AFTER 22 DAYS: 4TH OCTOBER, 2018

**Example 2:**

INPUT:

DAY NUMBER: 360

YEAR: 2018

DATE AFTER (N DAYS): 45

OUTPUT:

DATE: 26TH DECEMBER, 2018

DATE AFTER 45 DAYS: 9TH FEBRUARY, 2019

**Example 3:**

INPUT:

DAY NUMBER: 500

YEAR: 2018

DATE AFTER (N DAYS): 33

OUTPUT:

DAY NUMBER OUT OF RANGE

**Example 4:**

INPUT:

DAY NUMBER: 150

YEAR: 2018

DATE AFTER (N DAYS): 330

OUTPUT:

DATE AFTER (N DAYS) OUT OF RANGE

```
import java.io.*;
class Find{
public static void main(String args[])throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int n, day, year, i, p, k=0;
int ar[]={0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};
String br[]={"", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
System.out.print("Day number");
day = Integer.parseInt(in.readLine());
System.out.print("Year");
year = Integer.parseInt(in.readLine());
System.out.print("N: ");
n = Integer.parseInt(in.readLine());
p = day + n;
int a = 1, b = 1, date = 0, nday = 0, year1 = year;
if(year % 4 == 0){
for(i = 2; i <= 12; i++){
ar[i] += 1;
}
if(day >= 1 && day <= 366){
for(i = 0; i <= 12; i++){
if(ar[i] < day)
a = i;
if(ar[i] > day)
break;
}
date = day - ar[a];
}
else
k = 1;
if(k == 1)
System.out.println("Days are out of Range");
else if(k != 1 && n >= 1 && n <= 100){
if(p > ar[12]){
p = p - ar[12];
year1 = year1 + 1;
}
for(i = 0; i <= 12; i++){
if(ar[i] < p)
b = i;
if(ar[i] > p)
break;
}
nday = p - ar[b];
}
else{
k = 1;
System.out.println("N Days are out of range ");
}
if(k != 1){
System.out.println("Date is : " + date + "th " + br[a + 1] + " " + year);
System.out.println("N Date is : "+ nday + "th " + br[b + 1] + " " + year1);
}
}
else{
if(day >=1 && day <= 365){
for(i = 0; i <= 12; i++){
if(ar[i] < day)
a = i;
if(ar[i] > day)
break;
}
date = day - ar[a];
}
else
k = 1;
if(k == 1)
System.out.println("Days are out of Range");
if(n >= 1 && n <= 100){
if(p > ar[12]){
p = p - ar[12];
year1 = year1 + 1;
}
for(i = 0; i <= 12; i++){
if(ar[i] < p){
b = i;
}
if(ar[i] > p)
break;
}
nday = p - ar[b];
}
else{
k = 1;
System.out.println("N days are out of range ");
}
if(k != 1){
System.out.println("Date is : "+date+"th " + br[a+1]+" "+year);
System.out.println("N Date is : "+nday+"th " + br[b+1]+" "+year1);
}
}
}
}
```