a:6:{i:0;s:12723:"				<div class="h1"><h1>Auli Skiing Tour (Winter Special)</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.northerntourandtravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.northerntourandtravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Auli Skiing Tour (Winter Special)</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">Duration </td>
						<td class="p5px pl0px vat">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Haridwar, Rishikesh, Auli, Jyotirmath</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.northerntourandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Auli Skiing Tour (Winter Special) - 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="51513"/>
						</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_12/334611/101574.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/334611/101574.jpg"  width="150" height="150"    alt="Auli Skiing Tour (Winter Special)" title="Auli Skiing Tour (Winter Special)" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<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> Arrival at Delhi
								</p>
								<p class="aj">On your arrival at New Delhi airport meet our tour representative and get transferred to your pre- booked hotel.<br />
<br />
The capital city of India welcomes all the tourists with a number of attractions and heritage sites which form a major part of Indian tourism. Delhi is majorly known for its street food and fine-quality restaurants which attracts a lot of food lovers and other tourists to the destination. Even if you are planning your first trip, the city will surely not disappoint you in any way. The city offers something for every traveler.<br />
<br />
Enjoy breakfast and proceed to visit some of the important tourist places and major UNESCO sites of the country including Red Fort, Qutub Minar and Humayun’s Tomb.<br />
<br />
As the name suggests, Red Fort (closed on Mondays) is a red sand stone structure that paints a picture of Mughal era in India. Red Fort is the place from where the Prime Minister of India addresses the nation every year on the occasion of Independence Day (15 August). The star attraction of the monument is the sound and light show which tells about the history of Mughal era in the evenings.<br />
<br />
Qutub Minar is another prime attraction, we take you to. Built by Qutub-ud-din-Aibak in 1192, it is one of the finest and tallest minarets in the world. It is a monument that signifies the might of Islam. Also, you visit the Humayun’s Tomb, which was originally commissioned by Humayun’s first wife, Bega Begum. The first garden tomb of India, Humayun’s Tomb speaks much about the decline of the Mughal era and rise of British Empire during those times.<br />
<br />
Get back to the hotel for overnight stay.</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> Delhi - Haridwar (230 km/ 5 to 6 hours drive)
								</p>
								<p class="aj">Today, have breakfast and leave for Haridwar, one the holy Hindu cities of Uttarakhand.<br />
<br />
Haridwar is one of the seven holiest places for Hindus. It is the first place where the holy river Ganga enters into the Northern plains. People from all over the world visit the destination to take a dip in the holy waters of the river, which is believed to wash away the sins of every individual. Haridwar is also one of the four cities where Kumbh Mel air organized.<br />
<br />
Check-in at the hotel. Relax for some time in the hotel room. Later, in the evening visit Har-ki-Pauri, a holy Ghat on river Ganga, for Ganga Arti (river worship ceremony). It is going to be a memorable experience. Treat your eyes to the mesmerizing view of the shadow of the lamps falling in the water of the river.<br />
<br />
Return back to the hotel for overnight stay.</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> Haridwar - Jyotirmath (276 km/ 8 to 9 hours drive)
								</p>
								<p class="aj">On third day of your Auli Skiing tour, savor breakfast and drive to Jyotirmath. On your way to Jyotirmath visit Devprayag, Rudraprayag and Karnprayag.<br />
<br />
Also referred to as Jyotirmath, Jyotirmath is the gateway to one of the sacred pilgrimage sites, Badrinath. Devprayag (confluence of two holy rivers- Bhagirathi and Aalknanada), Rudraprayag (Alaknanda meets Mandakini) and Karnpryag (Alaknanda is joined by Pinda river) are the three extremely popular, out of Panch Prayags.<br />
<br />
Upon reaching Joshimath, check-in at a hotel and stay overnight</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> Jyotirmath - Auli (16 km / 2 hours drive)
								</p>
								<p class="aj">Today morning have breakfast and straight away drive to Auli which is around 16km; one of the major Skiing destinations in Uttarakhand. Set in the snow-capped Garhwal Himalayas, Auli is a great destination for nature lovers and adventure enthusiasts. To reach Auli, you can also take the 3.9 km long cable car (longest in Asia) to reach the beautiful Auli Ski Resort. On reaching Auli, enjoy skiing with professional instructors present at the site. Stay overnight at Auli Tourist Bungalow.</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> Explore Auli
								</p>
								<p class="aj">This morning, step out to explore the scenic beauty of Auli and indulge in skiing. With all your skiing equipment, go ahead for experiencing skiing at its best. The Auli ski resort has one Poma lift (open cable car) and one chair car. You will be getting instructions from qualified instructors at the site. The perfectly set ski slopes of Auli offer a panoramic view of the high Himalayan peaks like Nanda Devi (7818 m).</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 6:</b> Explore Auli
								</p>
								<p class="aj">Continue your skiing at the Auli Ski Resort. Ski through the most spectacular snow slopes of Asia and enjoy the view of snow capped peaks all around. Feel the excitement building up while you roll away in the snow. Overnight stay in Auli.</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 7:</b> Jyotirmath - Rishikesh (254 km, 7-8 hrs drive)
								</p>
								<p class="aj">This morning you return to Jyotirmath. Seek blessings at Narsingh Temple- the winter of Lord Badri, this temple is otherwise dedicated to Lord Narsingh- 4th incarnation of Lord Vishnu- half lion and half human and Shankaracharya Math- a math established by Adi Shankaracharya during the 8th century. Later, start driving back to Rishikesh. On reaching, check-in at the hotel. Have a comfortable overnight stay at the hotel.</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 8:</b> Rishikesh - Delhi (230 km, 5-6 hrs drive)
								</p>
								<p class="aj">Munch some healthy breakfast in the morning and then leave for a sightseeing tour of Rishikesh. Begin with a visit to Ram Jhulla and Laxman Jhulla- 2 popular suspension bridges over river Ganges; Sivananda Ashram- soak the serenity and simple lifestyle lead here; Triveni Ghat- the confluence of 3 holy rivers Ganga, Yamuna and Saraswati; Parmarth Niketan- a world-popular Ashram and Gita Kutir- another ashram popular for its meditation sessions. Later, start driving to Delhi. You will be transferred to the airport/railway station for further departure.<br />
<br />
The tour ends here.</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>
																		<li>Sightseeing</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount * Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. * Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.northerntourandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Auli Skiing Tour (Winter Special) - 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="51513"/>
						</form>
						</div>
						
						";i:1;s:72:"Book Auli Skiing Tour (Winter Special) - 7 Nights / 8 Days Tour Packages";i:2;s:168:"book auli skiing tour (winter special) - 7 nights / 8 days tour packages, adventure sports tour packages, new delhi, haridwar, rishikesh, auli, jyotirmath tour packages";i:3;s:229:"Book Auli Skiing Tour (Winter Special) - 7 Nights / 8 Days tour packages from A.G Northern Tour and Travels - Get attractive 7 Nights / 8 Days Adventure Sports  tour packages for  New Delhi, Haridwar, Rishikesh, Auli, Jyotirmath.";i:4;s:453:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Haridwar, Rishikesh, Auli, Jyotirmath"        
		                 },
		      "description": "",
		      "name": "Auli Skiing Tour (Winter Special)",
		      "telephone": "+91-9086002323"
		    }
		    </script>
			";i:5;N;}