a:6:{i:0;s:13026:"				<div class="h1"><h1>Golden Triangle with Gwalior Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.getsholidayindiatour.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.getsholidayindiatour.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Golden Triangle with Gwalior 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">GHIT-16</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Jaipur, Agra, Gwalior</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.getsholidayindiatour.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Golden Triangle with Gwalior 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="115604"/>
						</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/507555/188487.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/507555/188487.jpg"  width="150" height="150"    alt="Golden Triangle with Gwalior Tour" title="Golden Triangle with Gwalior Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Assistance on Arrival.<br />
A 24 - hour helpline.<br />
Welcome Drink On Arrival at Hotel.<br />
Daily Breakfast.<br />
Hotel Accommodation on twin / double sharing basis.<br />
Travel throughout the entire journey in an air condition car.Air fare / train fare.<br />
Guide & Monuments Entrance fees during sightseeing.<br />
Camera Charges / Jeep Safari / Camel Safari / Elephant Ride Charges.<br />
Expenses of personal nature such as tips, telephone calls, laundry, liquor, Insurance etc.<br />
Any other item not specified in the Package Inclusions.<br />
Supplement will be applicable for Single occupancy.<br />
GST Extra<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 Arrival
								</p>
								<p class="aj">On arrival at Airport / Railway station, meet our representative and proceed to Hotel for Check in. Delhi is a city built and re-built seven times over several centuries. The capital city today marries the quaint and unique elements of different historical eras with the pace of the bustling, growing economy. At every turn of the road, the past and the present coexist. Later proceed for city Tour of NEW DELHI - drive past the stately government buildings of the British Era designed by Lutyen’s, including the Indian Gate & the Presidential Palace. Continue onto the beautiful Humayun’s tomb of the Mughal era & thereafter visit the towering minaret of Qutab Minar. 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 2:</b> Delhi City Tour
								</p>
								<p class="aj">After breakfast visit the Jama Masjid, Red Fort and local Bazaar. After breakfast visit Jama Masjid- Jama Masjid, was commissioned to be constructed by the Mughal Emperor Shah Jahan. It holds the distinction of being one of the biggest and the most well known mosque of Old Delhi. Red Fort- The Red Fort is popularly known as the Lal Quila and is representative of the true splendor of the Mughal court. This imposing fort will engulf you with its size and grandeur. Later afternoon visit local market and temples. 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 3:</b> Delhi – Jaipur
								</p>
								<p class="aj">After Breakfast drive to Jaipur. Jaipur: Beautiful palaces, forts and colourful bazaars speak of the pink city’s glorious regal past. Modernity walks hand-in-hand with history in Jaipur. This largest city of Rajasthan, founded by Maharaja Sawai Jai Singh, is famous for its magnanimous hospitality. Later tour of the Pink city visiting the imposing hawa Mahal, Jantar Manter & City Palace now a museum, the ancient Observatory, The exotic Palace of the Winds & the picturesque bazaars of the walled city. 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> Jaipur City Tour
								</p>
								<p class="aj">After Breakfast, Visit Amber - the ancient capital of the Rajput Empire reaching the fort on elephant back. It is a deserted palace surrounded by majestic ramparts & the magnificent public & private room's evidence the splendor of the rulers of 16th & 17th century Rajasthan. Jaigarh Fort- Situated on the majestic Chilh-ka-Tola or the hill of eagles, the lofty walls of the Jaigarh Fort spread over a vast expansion of three kilometers. This impregnable fort of the Rajput was built purely for the defense activities. Nahargarh fort- Nahargarh Fort is located on the sheer rugged ridge of Aravali Hills and it forms an impressive northern backdrop of Jaipur. It looks most classy when floodlit at night. The fort overlooks the city and presents a glittering view of the city lights. It was built in 1734 and extended in 1868. Nahargarh meaning abode of the tigers was built by Jai Singh to bolster the defence of Amber. Evening explore the local bazzar. 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 5:</b> Jaipur – Agra
								</p>
								<p class="aj">After breakfast drive to Agra En-route Fatehpur Sikri - the extraordinary city built by Akbar the Great, deserted 14 years later, but which, during its brief span, exceeded London in both grandeur and population. After visit continue drive to Agra. Arrive and check in at Hotel. Akbarabad, as Agra was known during the Mughal era, is home to some of the most magnificent Mughal architectures. Situated on the banks of river Yamuna, the monumental beauty of Agra has inspired countless people around the world. This third largest city of the state of Uttar Pradesh is home to three UNESCO world heritage sites. Later Proceed to Visit to the world - famous Taj Mahal - or literally "Crown of Palaces" was built by Shah Jehan to immortalize the memory of his beloved wife Mumtaz Mahal who died tragically in 1631. After that visit, the Red Fort built by three generations of Mughal Emperors between 1565 and 1573. It housed both the presidential Palaces of the Royal family, and the military quarters. 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 6:</b> Agra – Gwalior
								</p>
								<p class="aj">After breakfast drive to Gwalior on arrival transfer to hotel & check In. later visit Gwalior fort- Gwalior Fort is one of the main attractions of the Gwalior city Located on the hill right in the middle of the city. Inside the majestic fort walls there are many monuments but maintaining those are restricted to only a few of them simply magical at sunset. It is breathtaking majesty and poetry. Scindia Museum- Located in the city, the palace-cum-museum sees visitors who are eager to get a glimpse into the lifestyles of royalty. Built in 1874, it reflects the architectural style of the Palace of Versailles, France. The stunning Durbar hall is resplendent with its painted gold leaves and enormous mirrors. Sas-Bahu ka Mandir- Is another structure dedicated to Lord Vishnu also known as Shashtra Bahu. These twin temples are situated adjacent to each other and the larger one is covered with intricate carvings and sculptures. The twin temples were built by Raja Mahipal and were completed in 1093 A.D. 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 7:</b> Gwalior Departure
								</p>
								<p class="aj">After Breakfast, departure from Gwalior for your onward destination.</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>
Guide & Monuments Entrance fees during sightseeing.</li><li>
Camera Charges / Jeep Safari / Camel Safari / Elephant Ride Charges.</li><li>
Expenses of personal nature such as tips, telephone calls, laundry, liquor, Insurance etc.</li><li>
Any other item not specified in the Package Inclusions.</li><li>
Supplement will be applicable for Single occupancy.</li><li>
GST Extra</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.getsholidayindiatour.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Golden Triangle with Gwalior 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="115604"/>
						</form>
						</div>
						
						";i:1;s:72:"Book Golden Triangle with Gwalior Tour - 6 Nights / 7 Days Tour Packages";i:2;s:144:"book golden triangle with gwalior tour - 6 nights / 7 days tour packages, heritage tour packages, new delhi, jaipur, agra, gwalior tour packages";i:3;s:199:"Book Golden Triangle with Gwalior Tour - 6 Nights / 7 Days tour packages from Gets Holiday India Tour - Get attractive 6 Nights / 7 Days Heritage  tour packages for  New Delhi, Jaipur, Agra, Gwalior.";i:4;s:1010:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Jaipur, Agra, Gwalior"        
		                 },
		      "description": "Assistance on Arrival.
A 24 - hour helpline.
Welcome Drink On Arrival at Hotel.
Daily Breakfast.
Hotel Accommodation on twin / double sharing basis.
Travel throughout the entire journey in an air condition car.Air fare / train fare.
Guide & Monuments Entrance fees during sightseeing.
Camera Charges / Jeep Safari / Camel Safari / Elephant Ride Charges.
Expenses of personal nature such as tips, telephone calls, laundry, liquor, Insurance etc.
Any other item not specified in the Package Inclusions.
Supplement will be applicable for Single occupancy.
GST Extra",
		      "name": "Golden Triangle with Gwalior Tour",
		      "telephone": "+91-8532003202"
		    }
		    </script>
			";i:5;N;}