a:6:{i:0;s:13711:"				<div class="h1"><h1>Sikkim Monasteries Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.grihapraveshtravels.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.grihapraveshtravels.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Sikkim Monasteries 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">
						8 Nights / 9 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Gangtok</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.grihapraveshtravels.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Sikkim Monasteries 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="96799"/>
						</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_15/423905/163877.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/423905/163877.jpg"  width="150" height="150"    alt="Sikkim Monasteries Tour" title="Sikkim Monasteries Tour" /></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> Sikkim Monasteries
								</p>
								<p class="aj">Sikkim is an enchanted land of monasteries. Sikkim’s 194 monasteries or gompas belonging to the Nyingmapa and Kargyu order have not only been influencing the culture heritage and lifestyle of the people but also demonstrate the ancient rituals in practice. Devoted lamas robed in red, chant ancient mantras to the rhythm of drums and trumpets while soft lights flicker from decorative lamps placed before statues of the great Guru Padmasambhava. Feel the peace and quiet of being one with nature and close to the almighty as sacred words mingle with the whirring prayer wheels. <br />
The gompas are adorned with life-like frescoes of hoary Buddhist legends, along with rare silk and brocade thankas. Also preserved here, are ancient Tibetan manuscripts, exquisitely carved woodwork and icons of silver and gold .</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> Rumtek Monastery
								</p>
								<p class="aj">Rumtek Dharma Chakra Centre, 24 km from Gangtok, was built in the 1960’s by His Holiness, the late 16th Gyalwa Karmapa, when he took refuge in Sikkim after the Chinese aggression on Tibet.<br />
<br />
It is the largest monastery in Sikkim and reflect the best of Tibetan architecture. It is an excellent replica of the original Kargyu headquarters in Tsurphu of Tibet. It houses some of the world’s most unique art objects, manuscripts and icons. About 2 km away from the Dharma Chakra Centre 300-year-old Rumtek Monastery, originally built by the fourth Chogyal. His Holiness the late Gyalwa Karmapa lived in this monastery until the completion of the Rumtek Dharma Chakra Centre.</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> Tolung Monastry
								</p>
								<p class="aj">Tolung monastery is located in the Dzongu area of North Sikkim and is the most secluded of all the monasteries in Sikkim. It is reachable after a strenuous trek through steep hillsides and dense forests. The Monasteries was built in the early 18th century, during the reign of Chogyal Chakdor Namgyal. It is said than an incarnation of Lhatsun Chempo had a premonition of a military invasion by Nepal and most of the precious objects including rare and valuable scriptures from other monasteries were sent to Tolung for safekeeping. The monastery possesses a fine collection of religious art, including some of the oldest thankas in Sikkim. All the relics are kept sealed in 13 boxes and taken out every three years for public display.</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> Phensang Monastery
								</p>
								<p class="aj">Built in 1721, during the time of Jigme Pawo, it was gutted by a fire in 1947, and rebuilt in 1948 through the efforts of the lamas. There are 300 monks in this monastery and the main annual function is held here on the tenth month of the lunar calendar.</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> Pemayangtse Monastery
								</p>
								<p class="aj">Perched on a hilltop with an impressive view of the Khangchendzonga range, Pemayangtse [The ‘Perfect Sublime Lotus’] is Sikkim’s premier monastery with all Nyingma monasteries here subordinate to it. Situated 118 km from Gangtok (via Rabongla), at a height of 2085 metres, this monastery was built in the year 1705, during the reign of Chador Namgyal, the third Chogyal. It is the second oldest and perhaps the most important monastery in Sikkim.<br />
The 108 monks living here are from Bhutia families of Sikkim The monastery contains numerous antique idols and objects of worship.<br />
<br />
On the top floor of the monastery is an exquisite, handcrafted structure depicting the heavenly abode of Guru Rimpoche, as it appeared to Lhatsun Chempo in a vision. <br />
<br />
The wooden structure, replete with miniature carvings, depicts the Maha Guru’s Paradise ‘Sangthokpalri’, and was completed single handedly in five years by the late Dungzin Rimpoche.<br />
<br />
The annual ‘chaam’ (dances) are performed at the end of February, on the 12th month of the Tibetan calendar. Dressed in costumes of rare magnificence, the lamas represent Mahakala and Guru Drag-mar. The dance ends on the third day with the unfurling of the ‘Ghyo-Ku’ a gigantic embroidered Buddhist scroll, as devotees genuflect in obeisance.</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> Enchey Monastery
								</p>
								<p class="aj">Perched on a hilltop just above the town of Gangtok, the Enchey Monastery was built in 1909 and follows the Nyingmapa order. It is believed that Lama Druptob Karpo, a tantric master famous for his powers of levitation had flown to the site from Maenam Hill in south Sikkim and built a small hermitage here for his mediation. This slowly developed into the now famous monastery, which draws devotees from all walks of life. There are about 90 monks in this monastery.</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> Tashiding Monastery
								</p>
								<p class="aj">Tashiding, the most holy of all monasteries in Sikkim , was built in 1716 on the spot consecrated by Guru Rimpoche. according to legend Guru Rimpoche shot an arrow and vowed to meditate where it fell. The arrow dropped on the spot where the monastery now stands.<br />
<br />
Located on a hilltop between the Ratong and Rangeet Rivers, the gold topped Tashiding Monastery is surrounded by deep valleys. Tashiding also has the famous ‘Chorten’ Thongwa Rangdol built by Lhatsum Chempo and considered the most holy in Sikkim. It is believed that a glimpse of this chorten is enough to cleanse one of a lifetime of sin. <br />
<br />
The main monastery was said to have been built by Pedi Wangmo during the reign of Chakdor Namgyal in 1716 A.D.<br />
The monastery is also the venue for the annual ‘Bumchu’ festival which divines the fortune of the coming year for Sikkim. Bumchu is a sacred pot containing holy water that does not evaporate nor spoil and continues to remain fresh even 300 years. The sacred Bumpa containing the water is opened for public audience 0nce a year on the 15th day of the first Tibetan month.</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> Phodong Monastery
								</p>
								<p class="aj">Phodong is 38 km north of Gangtok. The original monastery, which was established in 1740. Phodong belongs to the Kargyupa order and has a community of about 60 very friendly monks. Like Ralong and Rumtek, the main annual puja is performed here on the 28th and 29th days of the tenth month of the lunar calendar with religious dances being the main attraction.</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> Ralong Monastery
								</p>
								<p class="aj">Built after the return of the fourth Chogyal from his pilgrimage to Tibet, this monastery belongs to the Karma Kargyu order. His Holiness, the Gyalwa Karmapa performed the ‘Rabney’ (blessing) on its completion from Tsurphu itself, and grains from this ceremony fell on the ground Ralong. Between which today has around 100 monks. The main ceremony falls on the 28th and 29th day of the tenth month of the lunar calendar, when the ‘chaams’ are performed.</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>
												</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.grihapraveshtravels.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Sikkim Monasteries 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="96799"/>
						</form>
						</div>
						
						";i:1;s:62:"Book Sikkim Monasteries Tour - 8 Nights / 9 Days Tour Packages";i:2;s:107:"book sikkim monasteries tour - 8 nights / 9 days tour packages, valley tour packages, gangtok tour packages";i:3;s:159:"Book Sikkim Monasteries Tour - 8 Nights / 9 Days tour packages from Grihapravesh Travels - Get attractive 8 Nights / 9 Days Valley  tour packages for  Gangtok.";i:4;s:402:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Gangtok"        
		                 },
		      "description": "",
		      "name": "Sikkim Monasteries Tour",
		      "telephone": "+91-9800718321"
		    }
		    </script>
			";i:5;N;}