// editor3
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
typedef struct Node
{
int data;
struct Node*next;
}
Node;
Node*createNode(int value)
{
Node*newNode=(Node*)malloc(sizeof(Node));
newNode->data=value;
newNode->next=NULL;
return newNode;
}
void insertEnd(Node**head,int value)
{
Node*newNode=createNode(value);
if(*head==NULL)
{
*head=newNode;
return 0;
}
*min = head->data;
*max=head->data;
Node* temp = head->next;
while(temp!=NULL)
{
if(temp->data<*min)*min=temp->data;
if(temp->data>*min)*max=temp->data;
temp=temp->next;
}
}
int main()
{
int k;
scanf(“%d”,&k);
if(k<4||k>12)
{
printf(“Invalid input\n”);
return 0;
}
int pulses[k];
bool valid = true;
for(int I = 0 ; I <k ; i++)
{
scanf(“%d”,&pulses[i]);
if(pulses[i]<1||pulses[i]>5000)
{
valid = false;
}
}
if(!valid)
{
printf(“Invalid input\n”);
return 0;
}
Node*head=NULL;
int sum=0;
for(int i=0;i<k;i++)
{
if(pulse[i]>sum)
{
insertEnd(&head,pulses[i]);
sum+=pulses[i];
}
}
if(head==NULL)
{
printf(“-1\n”);
return 0;
}
int minVal,maxVal;
findMinMax(head,&minVal,&maxVal);
printf(“%d\n”,maxVal-minVal);
return 0;
}