a:6:{i:0;s:12864:"				<div class="h1"><h1>Shri Amarnath Yatra ( Helicopter Package ) 4 Nights / 5 Days Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.sharmatravel.in/" title="Home">Home</a> 
				
								
				<b class="ffv p2px">&rsaquo;</b>Shri Amarnath Yatra ( Helicopter Package ) 4 Nights / 5 Days Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Tour Code </td>
						<td class="p5px pl0px vat">MY-AN05D</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Srinagar, Pahalgam, Baltal, Gulmarg</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.sharmatravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Shri Amarnath Yatra ( Helicopter Package ) 4 Nights / 5 Days Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="121819"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_18/513007/196802.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_18/513007/196802.jpg"  width="150" height="150"    alt="Shri Amarnath Yatra ( Helicopter Package ) 4 Nights / 5 Days Tour" title="Shri Amarnath Yatra ( Helicopter Package ) 4 Nights / 5 Days Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Accommodation on twin / triple sharing basis<br />
Daily Breakfast & Dinner Veg. only at hotels.<br />
Welcome drinks on arrivals.<br />
News Papers in the vehicle.<br />
Surface transportation by AC Cars (AC will switch off in Hills).<br />
All interstate taxes, permits, parking, road tax, toll taxes and fuel charges etc include.<br />
All government applicable taxes and service charges.Air Fare / Train Fare.<br />
Personal expenses such as laundry, telephone calls, tips, liquor, boating & joy rides.<br />
All kind of personal expenses such as tips, laundry, telephone bills and beverages, Camera Fees.<br />
Cable Car Tickets, Any meals unless and otherwise specifically mentioned.<br />
Any claim due to road blocks, curfew, accident etc.<br />
Any other items which not specified in “Cost Inclusions “.<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrive Srinagar & Transfer to Houseboat/Hotel & Afternoon Mughal
								</p>
								<p class="aj">Arrive Srinagar, pick up and transfer to Hotel/Houseboat. After Freshen up proceed to Srinagar City tour visit The City of Srinagar. The world famous Mughal Gardens visiting the Nishat Garden known as 'Garden of pleasure' built in 16th century (1633) by Mughal Emperor Asif Khan. Then visiting Shalimar Garden known as 'Garden of love' built in 16th century (1619) by Mughal Emperor Jahangir for his beloved wife Noor Jehan or (Mehr-un-Nissa) The Chasme Shahi Garden and then pay visit to famous Shankaracharya Temple situated on top of Hill where you can have a look of whole Srinagar City. Overnight in srinagar.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Srinagar to Baltal via Sonmarg Baltal to Srinagar AMARNATH DARSHAN
								</p>
								<p class="aj">Very early morning proceed to baltal. Upon arrival in baltal in time to begin your Amarnath Yatra by helicopter from the Baltal huts which are just 10 minutes walk away from the Helipad. The helicopter operates  between  6:00  a.m.  And  5:00  p.m.  Helicopter  Services  is  subject  to  weather  conditions. Helicopter operates till Panchtarni then 6 kms. Trek from Panchtarni to Amarnath cave. You can also take Palki or Pony or Natural walk. After Darshan return in time to Helipad to take back Helicopter to Baltal. In case you are late you have to stay in Panctarni for overnight in Tent by yourself. Next Morning you will board  helicopter  to  Baltal  where  you  will  be  met  by our  driver. Transfer  to  Srinagar. Overnight  in Srinagar</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Srinagar to Pahalgam Day Trip
								</p>
								<p class="aj">This morning after breakfast drive to Pahalgam 2440 Mtrs (Valley of Kashmir) on the way visit Saffron field and Avantipur ruins, which is eleven hundred years old temple. Finally by the lunchtime you will reach Pahalgam, which is the most famous palace for Indian Film Industry. After lunch enjoys the nature charm of the valley. Afternoon you have free day in Phalgam to enjoy breathtaking views of greet mountains. The most beautiful of these is the huge, undulating meadow of Baisaran, surrounded by thickly wooded forests of pine. You can take walk in around the Phalgam is an idyllic spot for a picnic. By late evening return to Srinagar overnight at Srinagar.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Srinagar to Gulmarg Day Trip in the Evening Shikara Ride
								</p>
								<p class="aj">This morning after breakfast leave for Gulmarg which is one of the most beautiful summer resort in the valley. It is also popular for its highest golf course in the world and skiing during the winter season. One can have Gondola ride (cable car) from Gulmarg to Khalinmarg. Return to Srinagar, overnight at Hotel in Gulmarg. The name means 'Meadow of Flowers' and in the spring it's just that, a rolling meadow dotted with  countless  colorful  Bluebells.  Attractions  in  Gulmarg  the  most  beautiful  Sumer  resort It  is  also popular  for its highest  golf course in the  world  and  skiing during  the winter  season. One can have Gondola ride (cable car) from Gulmarg to Khalinmarg. Horse riding. By evening return back to srinagar. In the Late Evening Shikara Ride in Dal Lake. Overnight at Srinagar.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Srinagar Onward Journey
								</p>
								<p class="aj">Today you will be transferred to Srinagar Airport for your onward journey.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Air Fare / Train Fare.</li><li>
Personal expenses such as laundry, telephone calls, tips, liquor, boating & joy rides.</li><li>
All kind of personal expenses such as tips, laundry, telephone bills and beverages, Camera Fees.</li><li>
Cable Car Tickets, Any meals unless and otherwise specifically mentioned.</li><li>
Any claim due to road blocks, curfew, accident etc.</li><li>
Any other items which not specified in “Cost Inclusions “.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<p><strong>ADVANCE BOOKING FEE:</strong><br />
45 or more days before departure: Rs 25% per person.<br />
30 days before departure: 50% of total amount.<br />
Less than 30 days before departure: 100% of the total amount.

<p>&nbsp;<strong>NOTE:</strong><br />
Hotels can be change without prior notice or Depends on distance covered by vehicle.<br />
May be you have to start your journey early in the morning cause of same day Darshan.<br />
Early journey may become cause of breakfast loss.<br />
We charged only for 10 Night accommodation, Extra night due to any reason will be on direct payment basis.<br />
In case of Helicopter Darshan guest have to stay in Guptkashi or nearby places.						
    	<p class="h dif xlarge b mb5px">HOTEL RATES (Per Person Rate) Valid till 31st Aug 2018</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">CATEGORY</td>
				<td class="headHr p5px b">2 PAX</td>
				<td class="headHr p5px b">4 PAX</td>
				<td class="headHr p5px b">6 PAX</td>
				<td class="headHr p5px b">Extra Person</td>
			</tr>
			<tr>
				<td class="data p5px">Standard Hotel</td>
				<td class="data p5px">19388</td>
				<td class="data p5px">18500</td>
				<td class="data p5px">17500</td>
				<td class="data p5px">12700</td>
			</tr>
			<tr>
				<td class="data p5px">Deluxe Hotel</td>
				<td class="data p5px">22769</td>
				<td class="data p5px">20958</td>
				<td class="data p5px">19952</td>
				<td class="data p5px">13700</td>
			</tr>
		</table></div><br>
    	<p class="h dif xlarge b mb5px">HOTEL USED</p>
    	<div class="otherDetails aj">We provide Indigo/Sumo/Tempo Traveler for Standard Package & Dzire/Innova/Tempo Traveler for Deluxe Package.</div><br>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="headHr p5px b">DESTINATION</td>
				<td class="headHr p5px b">STANDARD HOTEL</td>
				<td class="headHr p5px b">DELUXE HOTEL</td>
			</tr>
			<tr>
				<td class="data p5px">Srinagar</td>
				<td class="data p5px">Golden Finger or similar</td>
				<td class="data p5px">Nishat View or similar</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.sharmatravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Shri Amarnath Yatra ( Helicopter Package ) 4 Nights / 5 Days Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="121819"/>
						</form>
						</div>
						
						";i:1;s:104:"Book Shri Amarnath Yatra ( Helicopter Package ) 4 Nights / 5 Days Tour - 4 Nights / 5 Days Tour Packages";i:2;s:193:"book shri amarnath yatra ( helicopter package ) 4 nights / 5 days tour - 4 nights / 5 days tour packages, religious & pilgrimage tour packages, srinagar, pahalgam, baltal, gulmarg tour packages";i:3;s:223:"Sharma Travel offers Shri Amarnath Yatra ( Helicopter Package ) 4 Nights / 5 Days Tour - 4 Nights / 5 Days tour package, budget Religious & Pilgrimage tour packages for Srinagar, Pahalgam, Baltal, Gulmarg at exciting price.";i:4;s:1233:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Srinagar, Pahalgam, Baltal, Gulmarg"        
		                 },
		      "description": "Accommodation on twin / triple sharing basis
Daily Breakfast & Dinner Veg. only at hotels.
Welcome drinks on arrivals.
News Papers in the vehicle.
Surface transportation by AC Cars (AC will switch off in Hills).
All interstate taxes, permits, parking, road tax, toll taxes and fuel charges etc include.
All government applicable taxes and service charges.Air Fare / Train Fare.
Personal expenses such as laundry, telephone calls, tips, liquor, boating & joy rides.
All kind of personal expenses such as tips, laundry, telephone bills and beverages, Camera Fees.
Cable Car Tickets, Any meals unless and otherwise specifically mentioned.
Any claim due to road blocks, curfew, accident etc.
Any other items which not specified in “Cost Inclusions “.",
		      "name": "Shri Amarnath Yatra ( Helicopter Package ) 4 Nights / 5 Days Tour",
		      "telephone": "+91-9643567755"
		    }
		    </script>
			";i:5;N;}