Array-max value in array

garbage value is there as output. why?

#include
using namespace std;
int main() {
int n;
cin>>n;
int a[n];
int max=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
if(a[i]>max)
{
max=a[i];
}
}
cout<<max;

return 0;

}