a:6:{i:0;s:13728:"				<div class="h1"><h1>Monastery Tour Leh Ladakh</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.outdoorhimalayan.in/" title="Home">Home</a> 
				
								
				<b class="ffv p2px">&rsaquo;</b>Monastery Tour Leh Ladakh</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">
						11 Nights / 12 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, 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.outdoorhimalayan.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Monastery Tour Leh Ladakh - 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="120028"/>
						</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_17/500801/194503.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/500801/194503.jpg"  width="150" height="150"    alt="Monastery Tour Leh Ladakh" title="Monastery Tour Leh Ladakh" /></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> Delhi
								</p>
								<p class="aj">On arrival in Delhi, welcome and transfer to 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> Fly Delhi - Leh (3445mtrs)
								</p>
								<p class="aj">Transfer to the airport to board the flight to Leh. You will be received on arrival and transferred to your hotel. Rest and acclimatize yourself to the altitude and rarified air of Ladakh. In the evening, we gather for dinner and are introduced to the tour guide.</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> Leh - Half day tour
								</p>
								<p class="aj">After breakfast, leave for a tour of Leh and see its ancient monuments and Buddhist sites. After lunch at your hotel we leave for a tour of the Shanti Stupa, Built by Japanese Buddhists this Peace Pagoda is a beautiful structure with gilt panels on its sides that display episodes from the life of Buddha. It was inaugurated in 1983 by His Holiness the Dalai Lama. We then drive to the Sankar Monastery that is surrounded by forests and barley fields that rise in terraces along the hillside. Within the monastery you can see beautiful Thanka paintings and statuettes of Buddha made of gold. Return to your hotel to 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> Leh -Hemis - Thiksey - Shey
								</p>
								<p class="aj">After breakfast we leave for a tour of the Hemis Gompa. This monastery is the best known in Ladakh. Around the monastery you will see Chortens or Buddhist reliquaries and ornate walls. After seeing the sights of the monastery we leave for the Thiksey Monastery. This is situated on a mountain from where you can see panoramic views of the Indus Valley. Within the monastery you can see many beautiful Buddhist artifacts. We then leave for the Shey Palace, which was the summer palace of the royal family of Ladakh. Return to your hotel to 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 5:</b> Leh - Alchi
								</p>
								<p class="aj">After breakfast, we leave for Alchi. Located 70 kms west of Leh, is the Uletokpo camp where we arrive rest, have lunch and then leave for a tour of Alchi monastery and the nearby village. Considered one of the most well preserved Buddhist centers of Ladakh, the Alchi monastery has beautiful paintings on its walls, which are examples of early Buddhist art. In Alchi village you can see the rural lifestyle of the villagers including activities such as grinding wheat etc. Stay overnight at the 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 6:</b> Alchi - Lamayuru - Alchi
								</p>
								<p class="aj">After breakfast we drive to Lamayuru, where we tour the Lamayuru monastery. Also called the Yung-drung (Swastika) monastery, Lamayuru is one of the oldest monasteries in Central Ladakh. Enjoy a picnic lunch at Lamayuru village and explore its surroundings in the afternoon. Return to the camp in the evening to 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 7:</b> Ridzong and Likir Monasteries
								</p>
								<p class="aj">After an early snack we leave for the Ridzong Monastery. The last kilometer of this journey is on foot, due to the steep hill. Ridzong is a nunnery, where Buddhist nuns reside. Tour the monastery and then return to the camp for breakfast. Later we leave for Leh. On the way we stop to the Likir Monastery built in the 15th century by monks of the Gelupa (Yellow Hat) Sect. Later we resume our drive along the Indus River. Arrive at the hotel in time for a late lunch. Relax in the afternoon and evening and stay overnight in 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> Leh - Saboo - Leh
								</p>
								<p class="aj">After breakfast we leave for Saboo village where you can see the traditional lifestyle of the people of Ladakh. You can taste Gur Gur or Yak Butter Tea and dine on local cuisine at a Ladakhi home. Return to Leh and enjoy shopping and sightseeing. Stay overnight 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 9:</b> Leh - Stok
								</p>
								<p class="aj">After breakfast we leave for the Stok Palace, where the royal family of Ladakh used to live. In the museum at the palace you can see family heirlooms and artifacts from royal times. We then tour the Ladakh Handicraft Center. Here you can buy beautiful handmade products and craft items. We than travel to Choglamsar, where you can see a Tibetan settlement. There are many Tibetans residing in Ladakh. Return to your hotel to 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 10:</b> Leh
								</p>
								<p class="aj">Your last day in Leh is at your disposal. You can go shopping, sightseeing or pursue any activity of your choice.</p>
								</td>
								</tr>
								</table>					
								</div><div id="show_more_content" style="display:none;">
									<div class="data">
									<table class="w100 formTable bdr0 imgWidth">
									<tr>
									<td class="p10px vat">
									<p class="b large mb5px"><b class="dif">Day 11:</b> Leh - Delhi
									</p>
									<p class="aj">After an early breakfast we leave for the airport, where you can board the flight to Delhi. Our representative will meet you at Delhi airport and help you check into your hotel. Check into your hotel and relax. Stay overnight 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 12:</b> Delhi - Departure
									</p>
									<p class="aj">After breakfast, leave for a day's sightseeing tour of Delhi. In historic Old Delhi you will see the Jama Masjid, one of the largest mosques of India; the Red Fort, an impressive sandstone monument built by the Mughals, and you can explore the busy market of Chandi Chowk. You can also visit Raj Ghat, the memorial of Mahatma Gandhi. In New Delhi you can see India Gate, Parliament House and the President's mansion. Humayun's Tomb, Qutub Minar and the Bahai Temple and shopping in crafts emporia in Delhi complete your Delhi tour. and Evening Transfer to Airport.</p>
									</td>	
									</tr>
									</table>				
									</div>					
							</div>							<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
													<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>2 Star Hotel</li>
																		<li>3 Star Hotel</li>
																		<li>4 Star Hotel</li>
																		<li>Flights</li>
																		<li>Meals</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
																		<li>Airport Pickup-Drop</li>
																		<li>Private Cab</li>
																		<li>Private Guides</li>
																		<li>Sim Card</li>
																		<li>Stay Included</li>
																		<li>Non Veg Meals</li>
																		<li>Veg Meals</li>
																		<li>Veg & Non Veg Meals</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.outdoorhimalayan.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Monastery Tour Leh Ladakh - 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="120028"/>
						</form>
						</div>
						
						";i:1;s:66:"Book Monastery Tour Leh Ladakh - 11 Nights / 12 Days Tour Packages";i:2;s:131:"book monastery tour leh ladakh - 11 nights / 12 days tour packages, hill station tour packages, new delhi, leh ladakh tour packages";i:3;s:193:"Outdoor Hamalyan Tour & Travel (leh Ladhakh) offers Monastery Tour Leh Ladakh - 11 Nights / 12 Days tour package, budget Hill Station tour packages for New Delhi, Leh Ladakh at exciting price.";i:4;s:418:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Leh Ladakh"        
		                 },
		      "description": "",
		      "name": "Monastery Tour Leh Ladakh",
		      "telephone": "+91-9469734212"
		    }
		    </script>
			";i:5;N;}