a:6:{i:0;s:17157:"				<div class="h1"><h1>Manali - Leh Overland Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.excellworldholidays.com/" title="Home">Home</a> 
				
								
				<b class="ffv p2px">&rsaquo;</b>Manali - Leh Overland 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">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">Manali, Leh Ladakh</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.excellworldholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Manali - Leh Overland 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="14963"/>
						</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_1/27643/22244.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_1/27643/22244.jpg"  width="150" height="150"    alt="Manali - Leh Overland Tour" title="Manali - Leh Overland Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Airfares Train Fare.<br />
Any Monastery Entrance Fees, Any Joy Ride Or Rafting.<br />
Medical Expenses (Apart From First Aid) And Insurance Of Any Kind.<br />
Tips, Laundry, Liquors, Wines, Mineral Water, Telephone Charges, Camera Fee And Items Of Personal Nature.<br />
Transportation Is Not On Disposal Basis. It Is Strictly As Per The Programme, Any Extra Running Will Be Charges Extra.<br />
Any Expenses Arising Out Of Unforeseen Circumstances Like Flight Delay / Cancellation / Hike In Fare, Strike Or Any Other Natural Calamities Or Any Emergency Evacuation Expenses.<br />
Any Other Item Not Mentioned In The Cost Includes Section.<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> Manali Sightseeing
								</p>
								<p class="aj">This day after breakfast proceed for local sightseeing of Manali, visit 450 years old temple dedicated to Hidimba Devi, which has some excellent woodcarving. Also visit Manu temple and Vashisht Kund known for its hot Sulphur springs. Evening free for shopping at local Tibetan market. Overnight in Manali.</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> Manali - Sarchu
								</p>
								<p class="aj">Drive early morning from Manali to Sarchu over the Rohtang-la pass (13,398 ft). Reach Keylong (05 HRS.). Lunch at restaurant and continue driving towards Sarchu. Optional: To avoid early morning departure to meet time at Keylong for lunch we may depart at our own pace with packed lunch from the hotel. On arrival check-in Rashpian Adventure. Overnight at Rashpian Adventure Camp.</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> Sarchu - Leh
								</p>
								<p class="aj">Leave early morning and drive through Lachung la Pass 5065 Mtrs rugged in the middle of mountains. At lunch time we stop at Pang. From here there are chances to see tiny colonies of Marmots on the Morea plains a stretch of 45 Kms. Finally we reach the second highest road Tanglang la PASS 5350 Mtrs. Finally we reach Leh in the evening. Overnight at 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 4:</b> Excursion to Sham Valley
								</p>
								<p class="aj">Morning after breakfast drive to Alchi. Enroute visit Magnetic Hill, Gurudwara Patthar Sahib, Confluence of Zanskar and Indus river. Visit Alchi Monastery and drive back to Leh. Just before reaching Leh visit Ladakh Hall of fame. Arrive hotel in Leh for dinner and overnight.<br />
<br />
Magnetic Hill : Defying the Law of gravity. This place is close to the Gurdwara Shri Patthar Sahib. It has been noticed that when a vehicle is parked on neutral gear on this metallic road the vehicle slides up-hill that's the Believe it or not of Ladakh.<br />
<br />
Gurdwara Shri Patthar Sahib: The Shrine known as Gurdwara Patthar sahib is situated about 25 kms. Short of Leh town on the Leh-Srinagar road. Built in the everlasting memory of Shri Guru Nanak Deve Ji the great prophet who sanctified the place by his sacred visit during the year 1517 while on his second missionary tour (2nd Udassi 1515-1518). The Guru reached here via Nepal, Sikkim, Tibet Yarkand and Leh after having spiritual discourses with the sidhas at Mount Sumer (Central Himalayas). On the hill features across the road, there used to live a wicked demon that terrorized the people of the area. Their miseries multiplied day by day. As their miseries became unbearable they prayed for divine help. It is said that the Great Guru heard their woes and came to their rescue. The Guru settled down on the bank of the river flowing nearby. The people sought for help and the Guru blessed the people and became very popular in the area. The locals called him as Nanak Lama. The Demon got enraged and started making plans to kill Guru Nanak. One morning, when the Guru was sitting in meditation, he rolled down a big boulder from the hilltop with the aim of killing the Guru. But on the very touch of Guru?s body, the solid rock melted like wax and Guru?s back got embedded on it like a cushion. The Guru kept on sitting in meditation undisturbed. Thinking that the Guru must have been killed, the demon came down but was taken aback on seeing the Guru in meditation, undisturbed. With a rage of anger he tried to push the rock with his right foot but the rock had already became like wax his foot also got embedded into it. On this, he realized his folly and powerlessness as compared to the spiritual power of the Great Guru. He fell on the feet of Guru and humbly prayed to be pardoned. The Guru advised him to get rid of his wickedness and lead the life of a nobel person, in the service of humanity. This changed the life style of demon and he started serving the people. The Guru there after continued his Holy journey towards Srinagar and Kashmir via Kargil.<br />
<br />
The boulder having imprint of the Guru's back is lying in the Gurudwara to this day.<br />
<br />
Onflence Of The Zanskar & Indus : On way to Sham Valley before Nimu village one can have this magnificent view of two rivers in wed-lock! In seasons they have different colors and flow and wildness.<br />
<br />
Alchi Gompa: 70 Kms from Leh, on the banks of the Indus, is the Alchi Gompa dating a thousand years back. One of its walls features thousands of miniature sized pictures of the Buddha. Three large sized images made of clay and painted brightly are its focal attractions. No longer an active religious center, it is looked after by monks from the Liker monastery. This is the only monastery amongst 34 monasteries, which is not located on a hilltop.<br />
<br />
Ladakh Hall Of Fame : The Hall of Fame is a glorious museum constructed by the Indian Army. It is worth a visit for every citizen. You can see the memorabilia, eminent defense personalities with biographies, images and weapons used during the Kargil and other key strategic battles fought in Ladakh. And belongings of the enemy soldiers found at war site. All the martyr and the gallantry awards.<br />
<br />
"Here's something that you will be proud of our defense personnel who sacrificed themselves so that we could live in peace."</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> Leh - Nubra Via Khardung la Pass
								</p>
								<p class="aj">Early morning proceed to Nubra Valley via the World Highest Motorable road (5602 Mts) Khardung la pass. Arrive Nubra and proceed for a visit to the White Sand Dunes at Hunder. You can enjoy the camel ride (On Own). Later if time permits visit Hunder and Diskit monasteries and check in at Deluxe Camp. Evening at leisure. Overnight at the camp.<br />
<br />
Khardung la Pass: The road journey to Nubra valley leads through Khardung La pass (The highest Motorable road in the world) 18,390 ft. around 39 Kms. Away from Leh. There are two checkpoints on the both sides of the pass. Khardong is the first village of Nubra valley at higher altitude than Deskit and other villages.<br />
<br />
Deskit Village: Deskit is the main village of headquarter of Nubra valley, which has a small market consisting of a row of shops and about 500 years old Gompa on the hilltop. Spectacular view of the valley can be seen form the monastery.<br />
<br />
Deskit Gompa: Deskit Gompa was founded by Lama Sherab Zangpo of Stod in about 1420 AD during the reign of King Dragspa. About 100 monks are residing in the Gompa, which is a branch of Thikse Monastery. The monastic festival called Gustor takes place on 20th and 21st days of the 12th month of Tibetan calendar.<br />
<br />
Hundar Village: Hundar is a beautiful village to stay with lot of trees and you will really enjoy your stay at Hundar. It has a small monastery and ruined fort above the village. The walk or Camel Safari (Double Hump bactrian camels.) from Hundar to Deskit, through sand dunes for two hours is wonderful (on own).</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> Nubra - Leh
								</p>
								<p class="aj">Morning after Breakfast proceed for Leh, once again driving via Khardungla pass the World Highest Motorable road. Evening explore Leh bazaar for souvenir, visit Leh Jokhang or Leh Mosque by foot. Overnight at the hotel.<br />
<br />
Jokhang: the Ladakh Buddhist Association in 1957 built the small Gonpa opposite to SBI and known as Jokhang in the main bazaar, which is open throughout the day for visitors. The Gonpa contains statue of Joyo Rinpoche (crowned Buddha).<br />
<br />
Leh Mosque: The Jama Masjid of Leh was built in 1666-67 AD under an agreement between Mughal Emperor Aurangzeb and Ladakhi ruler Deldan Namgyal. Initialy, the architecture of the mosque bore Tibetan, Central Asian and Ladakhi style. In recent years it has been reconstructed and given a new look with minarets and domes.</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> Excursion to Pangong Lake
								</p>
								<p class="aj">Morning after breakfast drive to to Pangong Lake on the Indo China border. Evening back to hotel in Leh for dinner and overnight.<br />
<br />
The Pangong Lake : This route takes the visitor past the picturesque villages of Shey and Thikse, and turns off the Indus valley by the side valley of Chemrey and Sakti. The Ladakh range is crossed by the Chang-la (18,000 feet / 5,475 M) which despite its great elevation is one of the easier passes, remaining open for much of the year even in winter, apart from periods of actual snowfall. Tangse, just beyond the foot of the pass, has an ancient temple.<br />
<br />
But the main attraction of this circuit is the Pangong Lake, situated at 14,000 feet (4,267 M). A long narrow basin of inland drainage, hardly six to seven kilometers at its widest point to which foreigners are permitted, is only some seven km along the southern shore from the head of the lake, but it affords spectacular views of the mountains of the Changchenmo range to the north, their reflection shimmering in the ever-changing blues and greens of the lakes brackish water. Above Spangmik are the glacier and snow-capped peaks of the Pangong range.</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> Airport Departure
								</p>
								<p class="aj">Leave on time for Leh airport to board your flight to Delhi.</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>
																		<li>Transport</li>
																		<li>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Airfares Train Fare.</li><li>
Any Monastery Entrance Fees, Any Joy Ride Or Rafting.</li><li>
Medical Expenses (Apart From First Aid) And Insurance Of Any Kind.</li><li>
Tips, Laundry, Liquors, Wines, Mineral Water, Telephone Charges, Camera Fee And Items Of Personal Nature.</li><li>
Transportation Is Not On Disposal Basis. It Is Strictly As Per The Programme, Any Extra Running Will Be Charges Extra.</li><li>
Any Expenses Arising Out Of Unforeseen Circumstances Like Flight Delay / Cancellation / Hike In Fare, Strike Or Any Other Natural Calamities Or Any Emergency Evacuation Expenses.</li><li>
Any Other Item Not Mentioned In The Cost Includes Section.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<p>Children Below 5 Years Of Age Are Allowed To Stay Free With Parents Without Extra Bed. Children Between 5 - 12 Years Have To Take An Extra Bed At The Prescribed Rate. 02Nd Child Between 5 - 12 Years Sharing Parent&#39;S Bed Have To Pay Extra For Meals Only.												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.excellworldholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Manali - Leh Overland 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="14963"/>
						</form>
						</div>
						
						";i:1;s:65:"Book Manali - Leh Overland Tour - 7 Nights / 8 Days Tour Packages";i:2;s:129:"book manali - leh overland tour - 7 nights / 8 days tour packages, lakes & rivers tour packages, manali, leh ladakh tour packages";i:3;s:166:"Excellworld Holidays offers Manali - Leh Overland Tour - 7 Nights / 8 Days tour package, budget Lakes & Rivers tour packages for Manali, Leh Ladakh at exciting price.";i:4;s:1026:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Manali, Leh Ladakh"        
		                 },
		      "description": "Airfares Train Fare.
Any Monastery Entrance Fees, Any Joy Ride Or Rafting.
Medical Expenses (Apart From First Aid) And Insurance Of Any Kind.
Tips, Laundry, Liquors, Wines, Mineral Water, Telephone Charges, Camera Fee And Items Of Personal Nature.
Transportation Is Not On Disposal Basis. It Is Strictly As Per The Programme, Any Extra Running Will Be Charges Extra.
Any Expenses Arising Out Of Unforeseen Circumstances Like Flight Delay / Cancellation / Hike In Fare, Strike Or Any Other Natural Calamities Or Any Emergency Evacuation Expenses.
Any Other Item Not Mentioned In The Cost Includes Section.",
		      "name": "Manali - Leh Overland Tour",
		      "telephone": "+91-9881120349"
		    }
		    </script>
			";i:5;N;}